如何修改脚本实现向ESXi主机批量复制SSH密钥?
批量向ESXi主机复制SSH密钥的脚本修改方案
你可以直接修改脚本,适配ESXi主机的密钥存储路径,同时保留批量处理逻辑,修改后的脚本如下:
#!/bin/bash # 遍历ESXi主机IP列表 for ip in $(cat /root/esxi_ips); do # 自动传递密码,将本地公钥追加到ESXi的授权密钥文件 sshpass -p "test" ssh root@$ip 'mkdir -p /etc/ssh/keys-root/ && cat >> /etc/ssh/keys-root/authorized_keys' < ~/.ssh/id_rsa.pub done
关键修改说明:
- 路径适配:ESXi的root用户授权密钥路径是
/etc/ssh/keys-root/authorized_keys,替换了Linux系统默认的~/.ssh/authorized_keys - 目录预创建:增加
mkdir -p /etc/ssh/keys-root/,避免部分ESXi主机因首次开启SSH未生成该目录导致命令失败 - 登录用户:明确指定
root@$ip,因为ESXi默认仅root用户拥有操作该路径的权限 - 输入重定向:用
< ~/.ssh/id_rsa.pub替代管道传递公钥,结合sshpass使用更稳定
注意事项:
- 请将
/root/esxi_ips替换为你的ESXi主机IP列表文件路径,确保每行一个IP - 把
"test"替换为实际的ESXi root用户密码 - 执行前建议先在单台ESXi主机上测试命令,确认可以正常写入密钥
- 若主机密码不统一,可修改脚本读取包含密码的列表(比如每行格式为
ip:password),再拆分变量处理
内容的提问来源于stack exchange,提问作者Prudhvi Krishna
相关产品推荐
相关产品推荐

