Linux 只允许使用上传的公钥进行 SSH 连接
网上搜索“Linux 密钥登录”大部分结果都是使用当前 Linux 服务器自生成的密钥对进行配置。但是对于“名下”有多个服务器的用户来说,每一台服务器都配置一套独有的密钥,属实有些多余。所以博主再结合了网上零星的教程和亲自实践之后,记录下如何上传使用自己的公钥,并且配置服务器只允许通过该公钥进行 SSH 连接。
使用 root 权限
因为这个配置牵扯到服务器远程访问控制,所以为了避免权限不够等问题,我们尽量使用 root 进行操作。如果当前不是 root 用户,可以使用如下命令切换至 root
sudo su - # 切换至 root
创建公钥存放目录
如果服务器未配置过 SSH 密钥,需要先创建一个存放公钥的隐藏目录,该目录默认位于 root 用户目录下,即 /root/ 目录
cd /root/ # 切换至 root 用户目录
mkdir .ssh # 创建 .ssh 隐藏目录
上传(粘贴)公钥
创建完公钥存放目录后,我们可以将公钥上传或粘贴到该目录下,并且重命名或新建公钥文件名为:authorized_keys
vi authorized_keys # 新建/修改 authorized_keys,粘贴公钥并保存该文件
修改 authorized_keys 权限
为了 authorized_keys 的安全和避免未预期的错误(听说该文件权限过高会无法使用),我们将该文件的权限赋予其所需的最小值
chmod 400 authorized_keys # 修改 authorized_keys 权限为 400
修改 SSH 配置
我们在将公钥成功上传或粘贴至服务器后,需要修改 SSH 配置文件来仅允许通过密钥进行 SSH 连接
vi /etc/ssh/sshd_config # 按如下配置修改 sshd_config
PubkeyAuthentication yes # 去掉改行前的井号注释,意为启用密钥登录
PasswordAuthentication no # 将该行的 yes 修改为 no,意为禁止使用密码登录
保存配置后使用 systemctl restart sshd
重启 SSH 服务即可完成所有配置。
记得不要断开当前连接,新建一个窗口连接测试一下配置是否成功,否则很容易就寄了!