SSH密钥批量配置免密登录多台服务器集群实操教程

SSH密钥批量配置免密登录多台服务器集群,最实用的做法是:在管理机上生成一对密钥,再用一条循环命令把公钥依次推送到各台服务器,最后通过免密登录命令验证。
整个过程不需要逐台输入密码,也不需要借助第三方软件,适合刚接触集群运维的读者直接照做。

动手前需要准备什么

开始前请确认三件事:

  • 管理机(你当前操作的电脑或跳板机)已安装 sshssh-copy-id,大多数 Linux 发行版默认自带。
  • 已获取每台目标服务器的 IP、SSH 端口(默认 22)和登录账号,且当前密码可正常登录。
  • 目标服务器之间的系统版本可以不一致,但建议都支持 SSH 协议。

如果目标服务器数量很多,建议先准备一个文本文件 hosts.txt,每行写一台服务器的 IP 或域名,方便后续批量读取。

第一步:生成SSH密钥对

在管理机上执行:

ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa

参数说明:-t rsa 指定密钥类型,-b 4096 表示密钥长度,-N "" 表示空密码(免密登录不需要额外输入私钥密码),-f 指定保存路径。
执行后会在 ~/.ssh/ 下生成私钥 id_rsa 和公钥 id_rsa.pub

如果之前已生成过密钥,想重新生成可以加 -y 参数覆盖,但建议先备份旧密钥,避免影响已有环境。

第二步:批量推送公钥到集群服务器

常见做法是循环读取 IP 列表,逐台执行 ssh-copy-id
命令如下:

while read host; do
  ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@$host
  if [ $? -eq 0 ]; then
    echo "$host 配置成功"
  else
    echo "$host 配置失败"
  fi
done < hosts.txt

这条循环命令会依次读取 hosts.txt 中的 IP,手动输入一次密码后,公钥就会追加到目标服务器的 ~/.ssh/authorized_keys 文件中。
如果服务器用户名不同,把 root 换成对应用户即可。
若 SSH 端口非 22,修改 -p 后面的数字。

对于没有 ssh-copy-id 命令的系统,可以用下面命令替代:

cat ~/.ssh/id_rsa.pub | ssh root@host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

批量执行时建议在脚本里加上 -o StrictHostKeyChecking=no,避免第一次连接时提示确认指纹导致脚本卡住:

ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub -p 22 root@$host

第三步:验证免密登录是否生效

批量配置完成后,从管理机直接 SSH 连接任意一台服务器:

ssh root@192.168.1.101

如果不再提示输入密码,直接进入命令行,说明该台服务器免密登录配置成功。

如果想批量验证整个集群,可以用循环命令逐台执行:

while read host; do
  ssh -o BatchMode=yes -o ConnectTimeout=3 root@$host "echo $host 免密登录正常"
done < hosts.txt

BatchMode=yes 表示禁止交互输入密码,如果配置失败会直接报错,不会卡住脚本。
能看到每台服务器返回“免密登录正常”,说明集群免密配置全部生效。

避坑指南:这些细节最容易出错

  • 权限错误:如果目标服务器上的 ~/.sshauthorized_keys 权限过宽,SSH 会拒绝使用密钥。确保 .ssh 为 700,authorized_keys 为 600。
  • 错误用户:公钥推到了 root 用户下,登录时却用了普通用户,免密必然失败。要保证推送和登录使用同一账号。
  • known_hosts 冲突:服务器重装系统后指纹会变化,导致连接失败。可以提前使用 -o StrictHostKeyChecking=no 跳过检查,或清理 ~/.ssh/known_hosts 中对应记录。
  • 大批量场景:如果服务器超过几十台,建议在 hosts.txt 中分批处理,避免单次密码输入超时导致后半段失败。
  • 私钥权限:管理机上的 ~/.ssh/id_rsa 权限建议为 600,否则 SSH 会提示权限不安全而拒绝使用。

常见疑问:一次说清

公钥推送后立刻生效吗?
是的,追加到 authorized_keys 后立即生效,不需要重启 SSH 服务。

所有服务器必须用同一个公钥吗?
可以,集群内共用同一把公钥便于管理;如果安全要求更高,建议每台服务器独立密钥并定期轮换。

不想用密码脚本,有没有更安全的方式?
可以用 Ansible 的 authorized_key 模块或 SSH 证书认证,但前期准备更复杂,适合已经具备自动化运维基础的场景。

按照上面的步骤操作,你会得到一套能够直接免密登录整个集群的环境。
如果中途遇到“Permission denied”或“Connection refused”,优先检查账号、端口、防火墙和权限四个地方,绝大多数问题都出在这里。
若需要管理更复杂的集群环境,可以把本文的批量推送思路扩展成自动化脚本,配合定时任务或 CI/CD 工具使用。

分享到:
上一篇
Ollama搭配Open WebUI可视化中转网关搭建
下一篇
防火墙放行建站标准80 443 22端口规范详解与实操
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意