Arch 中的 SSH 与 GSSAPITrustDns

Arch 中的 SSH 与 GSSAPITrustDns

我正在尝试将我的计算机设置为无需密码即可 ssh 访问远程服务器。我正在关注这些说明,但我遇到了一个问题:

我可以成功运行

kinit -f [email protected]

我看到 Kerberos 票证

klist -f

它会在 1 天后过期,但它就在那里(我必须每天更新一次吗?这对我未来的自己来说是一个问题)。

当前的问题在于该~/.ssh/config文件:

HOST lxplus*
    GSSAPITrustDns yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials yes

我收到错误:

/home/me/.ssh/config: line 6: Bad configuration option: gssapitrustdns
/home/me/.ssh/config: terminating, 1 bad configuration options

所以显然这GSSAPITrustDns是不可用的。

我在跑步:

[me@frankenstein ~]$ uname -srm
Linux 5.17.1-arch1-1 x86_64

我该如何解决这个问题?

答案1

/etc/krb5.conf我通过将以下内容添加到我的文件中设法解决了这个问题:

[libdefaults]
    rdns = false

如果有人能解释一下为什么会这样,或者是否有更好的解决方案,那就太好了。

答案2

所以显然这GSSAPITrustDns是不可用的。

包括几个 GSSAPI 选项GSSAPITrustDns实际上并不是标准 OpenSSH 的一部分——它们是由下游补丁添加的,因此它们仅在 Debian/Ubuntu(也许还有 Fedora/RHEL)中可用,而 Arch 则将其 OpenSSH 补丁保持在最低限度。

据我所知,GSSAPITrustDns或多或少相当于[libdefaults] rdns =,并且在任何情况下 rDNS 用法都是已启用当前 MIT Krb5 版本中默认情况下。我认为 CERN 文档只要求您为 SSH 启用此选项,因为它们是禁用 rdns在他们的全局 /etc/krb5.conf 中。 (我想这有点道理,因为他们正在使用 AD Kerberos?)

请注意您的第一个示例(SSH 选项)使rDNS 使用情况,而您自己的答案禁用它,在我看来就像是与你试图达到的目标相反我不太确定是什么让你说“这有效”。

它会在 1 天后过期,但它就在那里(我必须每天更新一次吗?这对我未来的自己来说是一个问题)。

这对于 Kerberos 票证来说是正常的。默认情况下,您确实需要kinit每天再次执行一次。

通常,您可以用来kinit -r 7d获取可以更新了最多 7 天无需密码(将旧票换成新票),只需运行kinit -R.请注意,您的领域管理员可能已经调整了可能的续订时间 - 如果它更短或被禁用,KDC 会悄悄地将续订时间限制为允许的最长时间,因此请klist稍后检查。

krenew工具(在 AUR 中找到“启动“包)可用于在后台刷新票证,作为仅安排 cronjob的更智能的替代方案kinit -R

同一个软件包附带了一个k5start工具,其工作方式非常相似,但也可以从密钥表– 如果允许您将密码保存在磁盘上,那么在 Kerberos 中,通常是通过创建一个“keytab”文件来完成的,该文件包含密码的哈希形式,并且可以与kinit(或 k5start)一起使用。

可以使用 创建用户密钥表ktutil。 (它与 /etc/krb5.keytab 中的密钥表相同,只是它保存的是您的用户凭据而不是服务的凭据,因此它是不是使用相同的工具获得 - “msktutil”和“cern-get-keytab”工具不适用。)

$ ktutil
ktutil:加号-密码-p[电子邮件受保护]-k 0 -f
ktutil:wkt foo.keytab
$ kinit -k -t foo.keytab

如果您被允许使用用户密钥表,最新版本的 MIT Krb5 可以直接使用它 - 您所需要做的就是将KRB5_CLIENT_KTNAME环境变量设置为密钥表路径,并且使用 GSSAPI 的程序将根据需要自动获取或刷新票证 - 无需甚至需要使用kinitnor k5start

相关内容