文档首页> 技术教程> SSH 免密登录配置详解:ssh-keygen 与 authorized_keys

SSH 免密登录配置详解:ssh-keygen 与 authorized_keys

发布时间:2026-08-03 11:23        更新时间:2026-08-03 21:39
SSH 免密登录的核心只有一个文件:服务器上的 ~/.ssh/authorized_keys。把你本机的公钥内容放进去,登录时就不再要密码。整个过程五分钟,踩坑大多集中在权限上。 第一步:本机生成密钥对 ssh-keygen -t ed25519 -C "andy@laptop" 一路回车即可,~/.ssh/ 下会生成私钥 id_ed25519(永远不要外传)和公钥 id_ed25519.pub(就是放进服务器的那个)。老系统不支持 ed25519 的话,用 ssh-keygen -t rsa -b 4096。本机已经有过密钥的,ls ~/.ssh 先看一眼,不必重复生成。 第二步:把公钥放上去 最省事的是一条命令代劳: ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@192.168.1.10 它会把公钥追加到对方的 authorized_keys 并顺手建好目录。想手动做也可以: cat ~/.ssh/id_ed25519.pub | ssh deploy@192.168.1.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" 第三步:验证 ssh deploy@192.168.1.10,不再提示密码即成功。本机有多把密钥时,用 -i 指定私钥。 比密码强在哪 公钥认证天然免疫暴力猜解:私钥从不在网络上传输,服务器端只存公钥。密码被穷举只是时间问题,密钥对的搜索空间则大到不可行,这也是建议把密码登录关掉的理由。 生成时可以给私钥设一道口令(passphrase),安全要求高的机器建议设;自动化脚本里图省事就留空,前提是本机环境可信。私钥文件的备份也提前想好:私钥丢了等于丢了钥匙,换新密钥对逐台机器重新 ssh-copy-id,比找回旧私钥现实得多。 连不上时按顺序查这六处 1. 目录权限:~/.ssh 必须 700,authorized_keys 必须 600,属主必须是登录用户本身。权限一松,sshd 会直接拒用这个文件。 2. 用 ssh -v 连一次看详细过程,卡在哪一步一眼可见。 3. /etc/ssh/sshd_config 里 PubkeyAuthentication 是否被设成了 no。 4. CentOS 上重建过用户目录的,执行 restorecon -Rv ~/.ssh 修复 SELinux 上下文。 5. AuthorizedKeysFile 改过路径的,确认文件在配置指向的位置。 6. 直接看服务端日志要答案:CentOS 翻 /var/log/secure,Ubuntu 翻 /var/log/auth.log,grep 一遍 sshd 字样。 私钥丢了或泄露时,把服务器上对应那行公钥从 authorized_keys 删掉即可作废。多台服务器可以复用同一对密钥,但重要的机器建议单独一对,注释字段写清归属人和设备,回收时才不会牵连无辜。