SSH登录开启免口令登录

现在登服务器连密码都不用了,真是安全~

4226546238.png

Q: 为什么使用公钥认证?

A: ssh登录密码可以被暴力破解,公钥认证比密码认证安全

如何开启公钥认证?

公钥认证需要生成一对密钥对,这个过程可以通过openssh里自带工具完成。 生成密钥对的过程如下:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -b 4096

程序会询问你将生成的文件保存在哪里,回车用默认路径即可 建议设置复杂的私钥密码,以防私钥泄漏后别人可以自由登录你的服务器(但是要记得私钥密码,记得私钥密码,记得私钥密码)

369115856.jpg

在ssh公钥认证中,公钥需要保存在欲登录服务器上,私钥保存在本地计算机上用于和公钥配对。将公钥拷贝到服务器有两种方法

ssh-copy-id <username>@<host> -p <port>

手动将公钥文件(默认保存在~/.ssh/id_rsa.pub)的内容添加到/服务器上要登录用户家目录/ssh/authorized_keys

具体方法:

①服务器若无.ssh目录请参照上文方法创建它,并修改权限。

②用scp将文件复制到服务器上:

scp ~/.ssh/id_rsa.pub <user>@<host>:/home/.ssh/authorized_keys

③更改权限:在服务器上执行

chmod 600 ~/.ssh/authorized_keys

如果服务器本来就是非口令认证的,你又不能登录(比如:忘记了私钥密码),可以考虑使用服务器提供商的管理面板,通过管理面板的root shell配置新公钥

1.编辑/etc/ssh/sshd_config 找到如下行,将其配置为yes

PubkeyAuthentication yes
RSAAuthentication yes

2.重启ssh服务器:

sudo /etc/init.d/ssh restart
  • 当此时尝试使用ssh登录服务器时,不会再询问ssh口令
  • 而是询问私钥密码,私钥密码不是每次都要输入的,它会记住一段时间
  • 要牢记私钥密码

既然启用了公钥认证,那么关闭密码认证很有必要

建议禁用密码验证,除非您有特定的原因。

要禁用密码验证,请在/etc/ssh/sshd_config文件中查找以下行:

#PasswordAuthentication yes

将其替换成如下所示的行:

PasswordAuthentication no

如果在配置的过程中遇到错误,可以参考以下网页: https://help.ubuntu.com/community/SSH/OpenSSH/Keys