首页 / 新闻资讯 / 技术教程

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

2026-08-03分类:技术教程管理员

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 删掉即可作废。多台服务器可以复用同一对密钥,但重要的机器建议单独一对,注释字段写清归属人和设备,回收时才不会牵连无辜。

技术教程