使用活动目录进行无密码 ssh 身份验证

问题描述 投票:0回答:4

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

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

是否可以使用某种 AD 机制通过 ssh 验证用户而无需密码?

ssh active-directory kerberos ssh-keys
4个回答
7
投票

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

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

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


4
投票

选项1

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

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

选项2

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

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


2
投票

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

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

0
投票

我会考虑使用保险库实现

https://www.hashicorp.com/blog/managing-ssh-access-at-scale-with-hashicorp-vault

使用 ansible playbook 来管理部署自动化似乎更明智

© www.soinside.com 2019 - 2024. All rights reserved.