13

我们当前的基础设施使用 ssh 密钥无密码登录到我们的 Linux 服务器。随着我们基础设施的发展,管理这些授权密钥变得越来越困难。

由于我们还有一个 Active Directory (AD) 服务器,我想使用这种机制通过 ssh 对用户进行身份验证,但要保持 ssh 密钥的无密码特性。

是否可以使用某种 AD 机制在没有密码的情况下通过 ssh 对用户进行身份验证?

4

3 回答 3

6

这通常是通过 SSH 密钥证书来完成的,以保持无密码的性质,同时拥有一个可以信任的中央机构,可以为每个帐户生成新的证书。

不建议在登录时使用 LDAP/Active Directory - 除了必须使用密码外,它还会成为访问其管理的任何系统的单点故障。

请参阅RedHat 文档以了解如何执行此操作,以及Facebook 关于他们使用 SSH 进行证书身份验证的好文章

于 2017-08-04T12:14:56.940 回答
4

选项1

这是一篇很好的文章,解释了如何做到这一点。 将 SSH 密钥存储在 Active Directory 中以便于部署

基本上,它将允许人们将他们的公钥发布到您的 Active Directory,然后您可以在您的服务器上设置一个 cron 脚本,以每 5 分钟左右获取一份公钥的副本。

选项 2

您还可以使用具有所有密钥的文件服务器,并使用 cron 脚本让每个服务器从那里获取。显然,您需要一种方法来验证每个密钥的真实性,尤其是在您使用 FTP 或其他一些不安全的协议时。这可以使用 GPG 来实现。您可以拥有一个签署所有员工密钥的公司主 GPG 密钥。

就个人而言,我最喜欢选项 2,因为我认为它更安全,但任何一种方法都应该有效。希望这可以帮助!

于 2017-08-08T17:02:25.503 回答
2

我的方法是将问题减少到已经解决的问题

  1. 使用活动目录在没有密码的情况下进行身份验证,并使用 Kerberos 建立 HTTPS 连接。Dzone教程使用 SPNEGO 配置 Tomcat 7 单点登录可能是该方法的一个很好的起点。
  2. 将 SSH 包装到 https 协议中,请参阅https://unix.stackexchange.com/questions/190490/how-to-use-ssh-over-http-or-https的 HTTP(S)中包装 SSH 部分
于 2017-08-03T15:36:48.917 回答