在用户和服务器组之间共享 authorized_keys、known_hosts 和 SSH 密钥

在用户和服务器组之间共享 authorized_keys、known_hosts 和 SSH 密钥

我们有 5 台生产服务器,每台有 2 个用户,我们用它们来运行一些应用程序。

server01虽然server05user1user2

我们希望任何服务器上的任何用户都可以通过 SSH 与任何其他服务器上的任何用户进行通信。

例如,user1server01user2server05等等。

是否可以创建一个 SSH 密钥并在所有服务器上的所有用户之间共享它?

每个服务器上是否存在一些全局目录来存储authorized_keysknown_hostsSSH 密钥,并在服务器上的两个用户之间共享?

寻找最简单的方法来实现这一点。

答案1

像 puppet 这样的配置管理工具可以帮助解决此类问题。但是,如果您不想学习任何新工具,并且只有五台服务器和 2 个用户,那么手动执行此操作不会花费太多时间。

如果您不关心审计或安全性,则可以在所有最终用户和所有服务器用户帐户之间共享相同的 SSH 密钥。您可以使用简单的 shell 脚本来自动执行此操作。

for server in server1.com server2.com server3.com; do
  ssh $server sh << "END"
  for user in user1 user2; do
    echo 'ssh public key goes here' | tee ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    echo 'ssh private key goes here' >> ~/.ssh/id_rsa
  done
END
done

但是,“正确”、安全且更可靠的方法是每个用户都有单独的用户帐户,然后根据用户最终用户需要执行的操作,使用 sudo 授予其他帐户访问特定命令的权限。

相关内容