我们当前的基础设施使用 ssh 密钥无密码登录我们的 Linux 服务器。 随着我们的基础设施的发展,管理这些授权密钥变得越来越困难。
由于我们还有一个 Active Directory (AD) 服务器,我想使用此机制通过 ssh 对用户进行身份验证,但保持 ssh 密钥的无密码性质。
是否可以使用某种 AD 机制通过 ssh 验证用户而无需密码?
这通常是通过 SSH 密钥证书完成的,以保持无密码的性质,同时拥有一个可以信任的中央机构,可以为每个帐户生成新证书。
不建议在登录时使用 LDAP/Active Directory - 除了必须使用密码之外,它还会成为访问其管理的任何系统的单点故障。
请参阅 RedHat 文档了解如何执行此操作,以及 Facebook 关于使用 SSH 进行证书身份验证的精彩文章。
选项1
这是一篇很好的文章,解释了如何做到这一点。 将 SSH 密钥存储在 Active Directory 中以便于部署
基本上,它将允许人们将他们的公钥发布到您的 Active Directory,然后您可以在服务器上设置一个 cron 脚本,以每 5 分钟左右获取一份公钥副本。
选项2
您还可以使用包含所有密钥的文件服务器,并使用 cron 脚本让每个服务器从那里获取数据。显然,您需要一种方法来验证每个密钥的真实性,尤其是在您使用 FTP 或其他不安全协议时。这可以使用 GPG 来实现。您可以拥有一个公司主 GPG 密钥来签署所有员工密钥。
就我个人而言,我最喜欢选项 2,因为我认为它更安全,但任何一种方法都应该有效。希望这有帮助!
我的方法是将问题减少到已经解决的问题
我会考虑使用保险库实现
https://www.hashicorp.com/blog/managing-ssh-access-at-scale-with-hashicorp-vault
使用 ansible playbook 来管理部署自动化似乎更明智