我对 Samba 4 和 Kerberos 有一个问题。我有一个带 SSO 的 SSH。但现在当我安装 Samba 4 时,它不起作用,而且似乎还没有人找到任何解决方案。我刚刚读到,这真的很困难和复杂,或者在 Windows 上一切正常,但在 Linux 上我还没有成功等等。
问题是,Samba 4 以不同的方式实现 Kerberos。它似乎与 SSH 等 Linux 工具不兼容。当我sshd
在调试模式下运行时,我看到它写道:
debug1: Unspecified GSS failure. Minor code may provide more information
No key table entry found matching host/bolbro.barbucha.local@
但是我无法将此类主体添加到 Samba 主体数据库。(尽管它不存在,但写道samba-tool spn add
,它受到另一个用户的影响。)
我的帖子可能听起来有些混乱,但我不得不说,我还不太明白到底是怎么回事,可能在我的文章中使用了一些错误的术语。你们有使用 Samba 4 和 SSH 客户端无需密码的经验吗?你们有没有在 Linux 客户端上成功使用过 Samba 4 和 SSO?
非常感谢任何提示或解释。(我正在使用 Debian Squeeze,Bolbro 是机器,运行 Samba 4 和 SSHD。同样的问题ksu
也影响了。)
答案1
遗憾的是,我还没有找到这个问题的解决方案,但现在我的电脑上有类似的东西。为了让 NSLCD 使用 GSSAPI 工作,我在服务器端执行了以下命令:
#create an user with a random password
samba-tool user add --random-password ldap-connect
#the password must not expire
samba-tool user setexpiry --noexpiry ldap-connect
#create a SPN (security principal name)
samba-tool spn add nslcd/bolbro.barbucha.local ldap-connect
#export key table of the user ldap-connect
samba-tool domain exportkeytab krb5.nslcd.keytab --principal=ldap-connect
每个安全主体 ( nslcd
) 都分配给一台计算机 ( bolbro.barbucha.local
),并且使用此 SPN 的服务将作为用户进行身份验证 ( ldap-connect
)。始终只能有一个安全主体<服务>/<机器>。您无法nslcd/bolbro.barbucha.local
再次创建并将其分配给其他用户。安全主体host/bolbro.barbucha.local
已经存在。我今天认为,只需导出分配了关键 SPN 的用户的密钥表就足够了。
我们拭目以待…
哎呀!
我今天(2014-03-02)找到了解决方案。是的,确实如此。我做了以下步骤:
- 将客户端加入域:
net ads join -U administrator
,其中net
是 Samba 实用程序之一 - 在
/etc/ssh/sshd_config
服务器端和/etc/ssh/ssh_config
客户端取消注释该行并用;GSSAPIAuthentication no
覆盖,在客户端同样启用no
yes
GSSAPIDelegateCredentials
- 执行双方命令
net ads keytab create
,以便将所需的密钥导出到/etc/krb5.keytab
/etc/hosts
在服务器端添加了完全限定的服务器名称
我不知道为什么,但是当我sshd
在服务器端以调试模式执行时(/usr/sbin/sshd -d
),我看到一条消息,说有未找到与 host/bolbro@ 匹配的密钥表条目。预期的服务器名称(klist -k /etc/krb5.keytab
在服务器端列出)是bolbro.barbucha.local
。附加服务器的 IP 地址和完全限定名称bolbro.barbucha.local
即可/etc/hosts
解决问题。