使用Shell脚本将SSH-KEY复制到多个服务器/登录



我正在在服务器上设置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键似乎仍然不起作用,但这是另一个时间/线程。

相关内容

  • 没有找到相关文章

最新更新