我在 EC2 上有多个远程开发人员和多台服务器。有没有办法可以集中管理 EC2 上的 authorized_keys 文件,而不必在每台服务器上手动添加密钥?
答案1
如果你设法将基础镜像设置为 Puppet 客户端,那么你可以使用ssh_authorized_key 指令,甚至可以直接使用文件类型管理模板文件并将其推送到文件.ssh/authorized_keys
。
Puppet 还包括通过 EC2 管理配置的实用程序,因此您可以真正实现一站式服务。
答案2
一个选项是设置一个小型实例,让所有开发人员都可以访问这台机器。他们通过 SSH 进入该机器,并且该机器有一个授权的 SSH 密钥,允许他们访问所有其他机器。然后,您可以在机器上使用防火墙来阻止来自其他 IP 地址的 SSH 登录。
另一个选择是设置类似 Puppet 的东西,它可以为您管理 authorized_keys 文件。
另一个选择是设置一个脚本,当在一台机器上更改 authorized_key 文件时,将其同步到所有主机。您可以使用 lsyncd 之类的工具来自动执行此操作。
请记住,仅仅因为您撤销了开发人员的 SSH 密钥,并不意味着您已经删除了他们对该机器的任何访问权限。具有 SSH 访问权限的恶意人员可能会设置类似反向 shell 的东西,或者在他们正在处理的代码中添加各种类型的后门。
答案3
我最终将密码验证重新添加到 SSH,这样我就可以使用服务器上的用户名和密码来管理它。我很想知道其他人是如何做到这一点的。
答案4
管理 SSH 实例的密钥非常困难,我想不出简单的解决方案。RightScale 和标量,解决此类问题。Scalr 使用安全密钥访问提供对任何实例的一键式 SSH 访问,并允许您在丢失密钥时重新下载密钥。Scalr 是开源的,也可以通过托管版本在线获取。
附言:我在 Scalr 工作