我正在我的服务器上设置SSH密钥,我正在尝试编写一个脚本来将它们全部复制出来。基本上我想要做的是将ssh id从服务器1复制到服务器1-10,然后登录到服务器2并将ssh id从服务器2复制到服务器1-10。
我有一个数组设置和2个for循环使用ssh-copy-id命令,但我错过了登录每个服务器的步骤,因为它出现在列表中。我意识到此时我将输入密码,但这比单独登录每个密码要容易得多。有人可以帮我吗?
另外,我的作品阻止了GitHub,所以请不要链接到那里。我无法看到它:(
答案 0 :(得分:0)
以下(完全未经测试的)代码应该做你想要的事情。
您运行此主机的主机以外的主机将在authorized_keys文件中拥有自己的条目(如果这很重要(可以避免,但需要更多工作,并且可能很容易在需要时手动修复)。
hosts=(hostA hostB hostC hostD ...)
for host in "${hosts[@]}"; do
# Skip the current host.
if [ "$HOSTNAME" = "$host" ]; then
continue
fi
# Copy the current host's id to each other host.
# Asks for password.
ssh-copy-id "$host"
done
# Get the id's from each host.
for host in "${hosts[@]}"; do
# Skip the current host.
if [ "$HOSTNAME" = "$host" ]; then
continue
fi
ssh "$host" 'cat .ssh/id_rsa.pub' >> host-ids
done
for host in "${hosts[@]}"; do
# Skip the current host.
if [ "$HOSTNAME" = "$host" ]; then
continue
fi
# This might work but I'm not sure.
ssh-copy-id -i host-ids "$host"
# If that didn't work then this should.
#ssh "$host" 'cat >> .ssh/authorized_keys' <host-ids
done
答案 1 :(得分:0)
感谢您提出的所有建议,但我刚刚登录每个服务器并运行了该脚本。我没有时间玩脚本了:/ SSH密钥似乎仍然没有用,但那是另一个时间/线程。