使用 SSH 获取 Kerberos 票证

使用 SSH 获取 Kerberos 票证

我希望在 ssh 时获取 Kerberos 5 票证,以获得全自动登录解决方案。

通常,您首先使用 kinit,然后使用 ssh:

> kinit user@DOMAIN
user@DOMAIN's Password: (enter password)
> ssh user@host
(successful login)

我想简单地运行 ssh user@host 并自动检查 Kerberos 票证。如果没有,我希望它获取票证然后登录。

> kdestroy
> ssh user@host
user@DOMAIN's Password: (enter password)
(successful login)
(log off of host)
> klist
(show ticket info)

我希望根据每个主机进行此项配置,因为并非我登录的每个主机都支持 Kerberos。

答案1

我假设您使用的是 OpenSSH,在这种情况下它就无法正常工作。此外,获取 TGT 被视为主要身份验证程序的工作,客户端只需参与使用 TGT 为客户端获取服务票证,因此如果项目确实添加了该功能,它会看起来很奇怪,并且可能会导致人们已经非常困惑的主题不断混淆。

也就是说,您实际上可以编写一个围绕 ssh 和 klist/kinit 的脚本,然后直接使用它或将“ssh”别名用于您的脚本。一旦您执行了您编写的脚本,您就可以根据您想要的任何标准进行操作。

答案2

如果您在 PAM 链中使用(在正常密码之前),这实际上是有可能的pam-krb5。这将自动根据 kerberos 检查您的用户名和密码并尝试获取票证。

ssh如果您正确配置了 PAM(即条目在common-auth和中) ,这也适用于。因此,如果存在具有该用户名的主体,common-session则任何支持 Kerberos 登录的主机也将授予票证。sshssh

答案3

这是我目前正在尝试的小包装脚本:

/bin/bash #!/bin/bash

# 如果没有,则获取 kerberos TGT
# 在使用 SSH 之前,已经有一个。
清单

如果 [ $? -eq 1 ]
然后
    echo "获取 kerberos 票证"
    基尼特

/usr/bin/ssh $@

相关内容