我正在在服务器上设置ssh键,我正在尝试编写一个脚本以将它们全部复制。基本上我想做的是将SSH ID从服务器1复制到服务器1-10,然后登录到服务器2,然后将SSH ID从服务器2复制到服务器1-10。
。我使用SSH-COPY-ID命令设置了一个数组,为循环设置了2个,但是我缺少在列表中出现的每个服务器登录到每个服务器的步骤。我意识到我此时将输入密码,但是这种方式比单独登录每个密码要容易得多。有人可以帮我吗?
另外,我的工作也阻止了github,所以请不要链接到那里。我看不到:(
类似以下(完全未经测试的)代码应该做您想做的事情。
主机以外的主机除您运行的主机外,如果很重要的话,将在授权_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
感谢所有建议,但我只是登录到每个服务器并运行脚本。我没有时间播放脚本了:/ssh键似乎仍然不起作用,但这是另一个时间/线程。