【速查】SSH 免密登录配置
SSH 免密登录配置,5分钟搞定

老被问这个,直接写个速查,省得每次手打。
原理一句话:客户端生成密钥对,把公钥扔到服务端 ~/.ssh/authorized_keys 里,登录时自动匹配。
1. 生成密钥对(客户端执行)
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519:推荐用 Ed25519,比 RSA 快且安全- 默认生成在
~/.ssh/id_ed25519(私钥)和~/.ssh/id_ed25519.pub(公钥) - 一路回车即可,别设 passphrase,否则每次还要输密码
如果老系统不支持 Ed25519,改用 RSA:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
2. 复制公钥到服务器
方法一:ssh-copy-id(最省事)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
输一次密码,自动把公钥追加到服务器的 ~/.ssh/authorized_keys,还会设好权限。
方法二:手动操作(没 ssh-copy-id 时)
# 客户端查看公钥
cat ~/.ssh/id_ed25519.pub
# 复制输出内容,登录服务器执行
echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
权限必须对,否则 SSH 会直接忽略 authorized_keys。
3. 验证
ssh user@server_ip
不用输密码直接进去,就成功了。
如果还弹密码,加 -v 看调试信息:
ssh -v user@server_ip
常见报错:
– Permission denied (publickey):公钥没对上或权限不对
– debug1: Offering public key 后面跟 no response:服务端没你的公钥
4. 进阶配置(推荐)
编辑客户端 ~/.ssh/config,省得每次敲 IP:
Host myserver
HostName 192.168.1.100
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
之后直接 ssh myserver 就行。
5. 安全加固(服务器端)
编辑 /etc/ssh/sshd_config:
PasswordAuthentication no # 禁止密码登录
PubkeyAuthentication yes # 开启密钥登录
PermitRootLogin prohibit-password # root 只能用密钥
改完重启 sshd:
systemctl restart sshd
注意:先确保密钥能登录再关密码,不然把自己锁外面了。
6. 多台服务器批量操作
用 ssh-copy-id 加循环:
for host in server1 server2 server3; do
ssh-copy-id user@$host
done
或者用 pssh、ansible 批量分发,那是另一个话题了。
总结:生成密钥 → 拷贝公钥 → 验证登录 → 关密码登录。5分钟搞定,别再说 SSH 免密麻烦了。
安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者
原文链接:https://shibaolong.com/archives/526
更多安全技术文章请访问 月梦沉冰的安全博客


浙公网安备 33010602011771号