管理多节点ssh公钥同步需统一分发、防覆盖、保权限,推荐原生命令与脚本化操作:一、主控节点生成密钥并批量注入authorized_keys;二、多节点互信需各生成密钥并汇总公钥;三、自动化校验权限与行数,测试后再禁密码登录;四、超10节点建议部署ssh ca统一签发短期证书。

管理多节点的 SSH 公钥同步,核心在于统一分发、避免覆盖、确保权限正确。宝塔面板不提供图形化批量添加功能,Linux 原生命令和脚本化操作才是稳定可靠的方式。
一、集中生成并统一注入公钥
在主控节点(如跳板机或运维服务器)生成密钥对,再将公钥批量写入所有目标节点的 /root/.ssh/authorized_keys,是最常用且可控的做法。
- 在主控机执行
ssh-keygen -t ed25519 -C "admin@central" -f ~/.ssh/id_ed25519_central,生成专用密钥 - 用
ssh-copy-id -i ~/.ssh/id_ed25519_central.pub root@node-ip逐台推送(适合少量节点) - 或用
for ip in 192.168.1.{10..20}; do ssh root@$ip 'mkdir -p /root/.ssh && chmod 700 /root/.ssh && echo "公钥内容" >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys'; done批量注入(注意替换真实公钥)
二、多节点间互信:构建免密环路
若需节点之间相互 SSH 访问(如集群内服务调用),每个节点都应拥有自己的密钥,并将所有节点的公钥汇总到每台机器的 authorized_keys 中。
- 在每台节点运行
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_node,生成唯一密钥对 - 收集全部
id_rsa_node.pub内容,合并为一个all_nodes.pub文件 - 用
scp all_nodes.pub root@target:/tmp/传到目标节点,再执行cat /tmp/all_nodes.pub >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys - 重复该流程,确保每台节点的
authorized_keys都包含全部公钥
三、自动化同步与权限加固
手动操作易出错,建议用简单脚本+基础校验保障一致性。
- 每次写入后执行
ssh root@node 'stat -c "%a %U:%G %n" /root/.ssh /root/.ssh/authorized_keys',确认目录权限为700、文件权限为600、属主为root:root - 用
ssh root@node 'wc -l /root/.ssh/authorized_keys | awk "{print \$1}"'核对行数是否与预期公钥数量一致 - 禁用密码登录前,务必用新密钥单独测试一次:
ssh -i ~/.ssh/id_rsa_node root@node -o ConnectTimeout=5
四、进阶:用 SSH CA 统一签发证书
当节点规模扩大(>10 台)或需动态授权时,传统公钥堆叠方式维护成本高。此时可部署轻量级 SSH 证书颁发机构(CA)。
- 在可信主机生成 CA 密钥:
ssh-keygen -t rsa -b 4096 -f ca_key -C "ssh-ca-2026" - 将
ca_key.pub分发至所有节点的/etc/ssh/ca_users.pub,并在sshd_config中启用TrustedUserCAKeys /etc/ssh/ca_users.pub - 为每个运维人员签发短期证书:
ssh-keygen -s ca_key -I ops-2026 -n "root,admin" -V +4h user_id_rsa.pub - 用户只需携带私钥 + 证书,即可登录任意已信任 CA 的节点,无需逐台维护公钥列表











