【速查】SSH 免密登录配置

SSH 免密登录配置,5分钟搞定

【速查】SSH 免密登录配置 - 安全技术

老被问这个,直接写个速查,省得每次手打。

原理一句话:客户端生成密钥对,把公钥扔到服务端 ~/.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

或者用 psshansible 批量分发,那是另一个话题了。


总结:生成密钥 → 拷贝公钥 → 验证登录 → 关密码登录。5分钟搞定,别再说 SSH 免密麻烦了。

推荐资源

– 部分链接含推广返佣 –

加入「渗透实战安全圈」

每天分享渗透测试实战、挖洞技巧、漏洞分析、工具推荐

知识星球

https://t.zsxq.com/40MyD

安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者


原文链接:https://shibaolong.com/archives/526
更多安全技术文章请访问 月梦沉冰的安全博客

posted @ 2026-06-04 10:00  梦中的雪莲花  阅读(25)  评论(0)    收藏  举报