Linux SSH 免密登录配置教程

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 生效,注意先保留一个会话再重启,避免配置错误把自己锁在外面。

七、常见故障排查

  1. 权限不对:~/.ssh 目录权限 700,authorized_keys 权限 600,私钥 600,否则 sshd 拒绝读取;
  2. 公钥粘贴多了换行或混入其他字符,导致验证失败;
  3. 客户端指定了错误的 IdentityFile,优先读了别的私钥;
  4. 服务端 SELinux 上下文异常,修复 restorecon -Rv ~/.ssh;
  5. 用 ssh -v user@host 看调试日志,定位卡在哪一步。

八、常见误区

  1. 把私钥发给别人或提交进 Git 仓库,等于暴露服务器;
  2. 还没验证免密就关闭密码登录,导致无法登录;
  3. 多台服务器共用一把密钥,一台泄露全盘受影响;
  4. 忽略权限,反复排查却卡在文件属主。

九、总结

免密登录核心是本地生成密钥对、公钥写入远端 authorized_keys、私钥本地签名验证。配合 ssh config 别名和服务端关闭密码登录,既提升运维效率又增强安全。出问题优先查权限、公钥完整性和 -v 调试日志,按步骤定位即可快速恢复。


emer 发布于  2026-11-14 07:21 
'); })();