我们有 5 台生产服务器,每台有 2 个用户,我们用它们来运行一些应用程序。
即server01
虽然server05
和user1
和user2
。
我们希望任何服务器上的任何用户都可以通过 SSH 与任何其他服务器上的任何用户进行通信。
例如,user1
从server01
到user2
到server05
等等。
是否可以创建一个 SSH 密钥并在所有服务器上的所有用户之间共享它?
每个服务器上是否存在一些全局目录来存储authorized_keys
和known_hosts
SSH 密钥,并在服务器上的两个用户之间共享?
寻找最简单的方法来实现这一点。
答案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 授予其他帐户访问特定命令的权限。