每次 ssh 登录 Linux 服务器都要输入密码,时间一长确实让人抓狂。尤其是运维人员需要频繁登录服务器进行操作,效率大大降低。本文将手把手教你如何实现 Linux 的 SSH 免密登录,让你彻底摆脱密码的束缚,畅享丝滑体验。
问题场景重现:密码的痛点
设想一下,你正在使用 scp 命令向远程服务器传输文件:
scp local_file.txt user@remote_host:/path/to/destination/
每次执行都需要输入密码,非常不方便。如果需要批量操作多台服务器,密码输入更是噩梦。此外,频繁输入密码也存在一定的安全风险,容易被键盘记录器窃取。
底层原理深度剖析:公钥私钥的奥秘
SSH 免密登录的核心在于非对称加密算法,也就是公钥和私钥。简单来说:
- 你需要在本地生成一对公钥和私钥。
- 将公钥上传到远程服务器上的
~/.ssh/authorized_keys文件中。 - 当你尝试通过
ssh登录时,服务器会使用公钥加密一段随机数据发送给客户端。 - 客户端使用私钥解密这段数据,并将解密结果发送给服务器。
- 服务器验证解密结果是否正确,如果正确则允许登录,无需密码。
这种方式安全性很高,因为私钥保存在本地,即使公钥泄露也不会导致安全问题。
具体配置解决方案:一步到位
下面是实现 SSH 免密登录的详细步骤:
生成密钥对:

在本地终端执行以下命令:
ssh-keygen -t rsa -b 4096 # 生成 RSA 密钥,-b 指定密钥长度,通常 4096 位更安全这个命令会提示你输入密钥保存路径和密码(passphrase)。如果不想设置密码,直接回车即可。默认情况下,密钥保存在
~/.ssh目录下,私钥是id_rsa,公钥是id_rsa.pub。
上传公钥到远程服务器:
可以使用
ssh-copy-id命令简化上传过程:ssh-copy-id user@remote_host # 将公钥复制到远程服务器,需要输入密码ssh-copy-id命令会自动创建.ssh目录(如果不存在)并将公钥追加到authorized_keys文件中。如果服务器没有ssh-copy-id命令,也可以手动上传公钥并添加到authorized_keys文件:# 本地终端 scp ~/.ssh/id_rsa.pub user@remote_host:/tmp/id_rsa.pub.tmp # 上传公钥到临时目录 # 远程服务器 mkdir -p ~/.ssh # 创建 .ssh 目录,如果不存在 cat /tmp/id_rsa.pub.tmp >> ~/.ssh/authorized_keys # 将公钥追加到 authorized_keys 文件 chmod 600 ~/.ssh/authorized_keys # 设置 authorized_keys 文件权限 rm /tmp/id_rsa.pub.tmp # 删除临时文件测试免密登录:
ssh user@remote_host # 尝试 SSH 登录,应该不再需要输入密码
实战避坑经验总结
- 权限问题:
.ssh目录和authorized_keys文件的权限必须正确。.ssh目录的权限必须是700,authorized_keys文件的权限必须是600。可以使用chmod命令修改权限。 - SELinux 或 AppArmor: 如果服务器启用了 SELinux 或 AppArmor,可能会阻止 SSH 免密登录。需要配置 SELinux 或 AppArmor 允许 SSH 访问。
authorized_keys文件格式: 确保authorized_keys文件中的每一行都只包含一个公钥,并且没有多余的空格或换行符。尤其注意Windows换行符的问题,上传后可能导致无法登录。可以使用dos2unix命令转换文件格式。- SSH 配置: 检查
/etc/ssh/sshd_config文件,确保PubkeyAuthentication yes和AuthorizedKeysFile .ssh/authorized_keys没有被注释掉。 - 禁用密码登录: 为了进一步提高安全性,可以禁用密码登录。在
/etc/ssh/sshd_config文件中设置PasswordAuthentication no并重启 sshd 服务。但是需要确保已经配置好免密登录,否则将无法登录服务器。重启 sshd 服务可以使用systemctl restart sshd命令。 - 考虑使用跳板机: 对于复杂的网络环境,可以考虑使用跳板机进行统一管理。通过跳板机可以简化 SSH 连接,并提高安全性。可以使用
ProxyJump配置项来设置跳板机。
通过本文的详细教程,相信你已经掌握了 Linux SSH 免密登录的配置方法。告别繁琐的密码输入,让你的工作效率更上一层楼!在实际使用中,根据服务器的具体配置和安全策略进行调整,祝你使用愉快!
冠军资讯
代码一只喵