Linux SSH 免密登录配置教程
时间:2026-11-14 07:21 作者:emer 分类: 无
Linux SSH 免密登录配置教程
一、免密登录解决什么问题
运维每天要登录多台服务器,每次输密码又慢又容易错,批量脚本里硬编码密码还有泄露风险。SSH 公钥认证用非对称密钥代替密码:本地生成一对密钥,把公钥放到目标服务器,登录时本地私钥完成签名验证,全程不再输入密码,是自动化运维和跳板机的标准方案。
二、生成密钥对
在本地客户端执行,默认生成 RSA 密钥,一路回车即可:
ssh-keygen -t rsa -b 4096 -C "ops@local"
生成两个文件:~/.ssh/id_rsa(私钥,务必保密,绝不上传)和 ~/.ssh/id_rsa.pub(公钥,可以公开分发)。
三、上传公钥到目标服务器
最简单用 ssh-copy-id,自动把公钥追加到服务器授权文件:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.1.20
执行时输入一次服务器密码即可。手动方式则把公钥内容追加到远端 ~/.ssh/authorized_keys,注意每行一个公钥。
四、验证免密登录
ssh user@192.168.1.20
不再提示密码直接进入 shell 即成功。
五、ssh config 简化登录
在本地 ~/.ssh/config 配置别名,以后只敲别名:
Host web01
HostName 192.168.1.20
User deploy
Port 22
IdentityFile ~/.ssh/id_rsa
使用 ssh web01 即可,多台服务器统一管理。
六、服务端安全配置
编辑 /etc/ssh/sshd_config 加固:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitRootLogin no
免密验证生效后关闭密码登录、禁止 root 直接登录,防止暴力破解。改完执行 systemctl restart sshd 生效,注意先保留一个会话再重启,避免配置错误把自己锁在外面。
七、常见故障排查
- 权限不对:
~/.ssh目录权限 700,authorized_keys权限 600,私钥 600,否则 sshd 拒绝读取; - 公钥粘贴多了换行或混入其他字符,导致验证失败;
- 客户端指定了错误的 IdentityFile,优先读了别的私钥;
- 服务端 SELinux 上下文异常,修复
restorecon -Rv ~/.ssh; - 用
ssh -v user@host看调试日志,定位卡在哪一步。
八、常见误区
- 把私钥发给别人或提交进 Git 仓库,等于暴露服务器;
- 还没验证免密就关闭密码登录,导致无法登录;
- 多台服务器共用一把密钥,一台泄露全盘受影响;
- 忽略权限,反复排查却卡在文件属主。
九、总结
免密登录核心是本地生成密钥对、公钥写入远端 authorized_keys、私钥本地签名验证。配合 ssh config 别名和服务端关闭密码登录,既提升运维效率又增强安全。出问题优先查权限、公钥完整性和 -v 调试日志,按步骤定位即可快速恢复。