概述
公钥认证采用私钥签名,公钥验证,相比账号密码验证登录更具有安全性。实现分四步:
- 生成密钥(公钥与私钥)
- 放置公钥到服务器指定用户目录的 .ssh/authorized_key 文件中
- 配置SSH客户端使用密钥登录
- 客户端测试
- 测试成功后关闭账号密码的登录方式(可选)
第一、二步
# 生成密钥对(一路回车都用默认配置即可) ssh-keygen -t rsa ls ~/.ssh/ # 创建文件 authorized_keys,并赋予 600 权限 touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 将公钥内容追加到 authorized_keys 文件中 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
第三步
# 修改 SSH 配置 vi /etc/ssh/sshd_config
找到并修改以下配置项
# 开启公钥认证登录 PubkeyAuthentication yes # root 用户能否通过 SSH 登录 PermitRootLogin yes ## 添加公钥的保存文件(找到此配置后,将前面的 # 注释掉即可) AuthorizedKeysFile .ssh/authorized_keys ## 开启私钥登录[RSAAuthentication (rsa认证)是只支持第一代SSH通讯协议使用的配置项,新操作系统默认使用第二代协议了,配置里也找不到了 RSAAuthentication yes
改好后重启 sshd 服务
systemctl restart sshd
第四步
将服务器上生成的 id_rsa 私钥传到 SSH 客户端(如 XFTP),测试公钥认证是否可用,用户名填写服务器上 .ssh 目录所在的用户。
第五步
vi /etc/ssh/sshd_config
找到并修改以下配置项
PasswordAuthentication no
改好后重启服务
systemctl restart sshd
最后提醒:一定要保存好 id_rsa 私钥文件不要弄丢,重命名这个私钥文件没关系。