我正在尝试将我的计算机设置为无需密码即可 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 的程序将根据需要自动获取或刷新票证 - 无需甚至需要使用kinit
nor k5start
。