带有 LDAP 身份验证 (ActiveDirectory) 的 SSH 和存储在 AD 中的 ssh 密钥

带有 LDAP 身份验证 (ActiveDirectory) 的 SSH 和存储在 AD 中的 ssh 密钥

环境 :Ubuntu 14.04 和 16.04 服务器、Windows Server 2016 上的 Active Directory、Ubuntu 14.04 和 16.04 客户端。Ubuntu 服务器和客户端不在域中。

大家好,

我对所有实现 ssh 的 ldap 身份验证的方法都有点迷茫。但我找不到一个适合我的方法。

我的愿望:我想通过使用“sAMAccount@serverIP”登录来连接到我的服务器,我的 SSH 密钥存储在我的 AD 中(新字段添加为 odiSSHPubKeys)。我的服务器可以与我的 AD 很好地通信(ldapsearch 查询)。我通过更新我的 sshdconfig 实现了这一点:

/etc/ssh/sshd_config

AuthorizedKeysCommand /usr/bin/auth
AuthorizedKeysCommandUser root

/usr/bin/身份验证

#!/bin/bash

cn=$1
server=ldap.myad.net #Put your server IP
basedn=dc=mydomain,dc=net #Put your basedn
port=389
bindUser=myBindUser
bindPass=myBindUserPassword
#cn=mathieu

ldapsearch -LLL -o ldif-wrap=no -x -h $server -p $port -b $basedn -D $bindUser -w $bindPass -s sub "(sAMAccountName=$cn)" | sed -n 's/^[ \t]*odiSSHPubKeys:[ \t]*\(.*\)/\1/p'

当我连接到[电子邮件保护],我被预授权踢出

/var/log/auth.log

Apr 18 11:56:26 MLL-HV-UBU-16 sshd[9103]: Invalid user mathieu from 192.168.0.114
Apr 18 11:56:26 MLL-HV-UBU-16 sshd[9103]: input_userauth_request: invalid user mathieu [preauth]
Apr 18 11:56:26 MLL-HV-UBU-16 sshd[9103]: Connection closed by 192.168.0.114 port 50152 [preauth]

所以我的问题是“mathieu”在我的 Ubuntu 服务器上不存在。我尝试在 /usr/bin/auth 中强制使用我的 cn,并使用 root 帐户登录([电子邮件保护]) 并且它可以工作,所以我的 /usr/bin/auth id 很好。

我如何禁用预授权检查以使 ldap 正常工作?

PS:我不想进行登录/密码验证(对于这个解决方案,有很多教程,但针对 ssh 密钥或旧密钥的教程并不多)。

感谢您的帮助

答案1

最好的选择是使用 sssd 来实现此目的。我使用 AltSecurityIdentities 来存储密钥,并使用 realmd 将服务器加入域。

加入域后,将以下内容添加到 /etc/sssd/sssd.conf 文件的 [domain/] 部分下:

ldap_user_extra_attrs = altSecurityIdentities:altSecurityIdentities
ldap_user_ssh_public_key = altSecurityIdentities
ldap_use_tokengroups = True

并在 [sssd] 部分下添加:

services = nss, pam, sudo, ssh

然后在 /etc/ssh/sshd_config 添加:

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser root

重新启动这两个服务,您应该能够使用您的 AD 用户名和存储在 AD 中的 AltSecurityIdentities 扩展属性中的密码登录。

答案2

最近,我开发了一个 Go 工具,该工具可以根据 Github/Gitlab 组成员身份将 SSH 密钥同步到您的服务器。

来看看吧!==>http://github.com/samber/sync-ssh-keys

这可以避免一些与 LDAP 相关的黑客攻击 :-(

相关内容