跳转至

免密码登录

使用Public Key(公钥)登录相比起使用密码登录不仅更方便,且更为安全。

应确认服务器是否允许该方式

服务器默认是没有开启公钥登录的。请联系管理员确认服务器是否允许公钥登录。

由我管理的服务器通常允许。

如果使用的是腾讯云、AWS等厂商提供的云服务,需要参考各个厂商自己的政策及教程。

设置

可以通过以下方式设置免密码登录:

1、本地步骤

首先在本地计算机的cmd中执行ssh-keygen。所有提示一路回车即可,注意中间提示密钥文件存储的位置,通常是

C:\Users\[username]/.ssh/id_rsa  # Windows
~/.ssh/id_rsa  # Linux or MacOS

在对应目录下找到id_rsa.pub文件,用记事本打开并复制里面全部内容(公钥)。

2、服务器步骤

在服务器的~/.ssh目录下创建authorized_keys文件,并用记事本或vim编辑,将在第一步中复制的公钥粘贴在该文件中。

随后在服务器运行以下命令确保相关路径的权限设置正确:

chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3、测试连接

此时,在本地用任意SSH工具连接服务器都应当不再需要输入密码。如在cmd中尝试:

ssh [username]@[host]

应当可以直接登入服务器。

仍然需要输入密码

可以尝试在服务器运行以下命令后重试:

restorecon -v ~/.ssh/authorized_keys

管理员设置

允许SSH通过公钥登录:

sudo vim /etc/ssh/sshd_config

PubkeyAuthentication yes取消注释。

随后重启SSH服务即可生效:

sudo systemctl restart ssh

为提高服务器的安全性,管理员亦可以关闭密码登录,仅允许公钥登录,即将PasswordAuthentication设置为no。然后用户每次需要添加一个登录设备,需通过管理员把公钥加入对应账户的~/.ssh/authorized_keys中。


最后更新: July 16, 2022