通过 VPN 从非域计算机使用 Kerberos PuTTY

通过 VPN 从非域计算机使用 Kerberos PuTTY

感觉我在这里遗漏了一些基本的东西……

我有一台非域计算机(场外个人计算机),我通过它通过 VPN 接入我们的工作网络。连接后,从“klist”中可以看到我的 VPN 客户端(Juniper)已协商 Kerberos 票证(krbtgt/ @ )。另请注意,这台计算机的本地登录用户名与我的 Active Directory 用户名不同。

然后我想使用启用了 GSSAPI/Kerberos 的 PuTTY 通过 SSH 连接到 Linux 主机(Linux 主机已正确设置 SSSD,并接受来自工作域成员的类似配置的 PuTTY 实例的 GSSAPI 登录)。但是,登录时系统提示我输入密码,而不是直接让其通过。

有没有办法让我明确地将 PuTTY 指向我在 klist 中看到的票证?我是否需要尝试获取新票证?如果是,该怎么做?我是否需要不同类型的票证(主机与 krbtgt)?我确实尝试使用 ksetup /MapUser 尝试将我的本地用户帐户映射到我在 klist 中看到的票证,但我的语法失败了,无论如何,我不确定这是否是正确的选择。

显然,我这里有其他的登录选择,但我想了解发生了什么。

提前致谢!

答案1

Windows 内置的 Kerberos 客户端能够自行处理此问题。您只需先给它一点关于如何找到给定领域的 KDC 的指导。它有点像 Windows 中的 krb5.conf 文件。

从提升的 cmd 提示符下,对要使用的每个 KDC 运行此命令:

ksetup /addkdc REALM.EXAMPLE.COM mykdc.realm.example.com

现在,即使您的 VPN 客户端尚未为您获取 TGT。您可以执行以下操作,在 Kerb 主体的上下文中打开 cmd 提示符。

runas /netonly /user:[email protected] cmd

然后从该提示:

putty -ssh [email protected]

假设您的默认 PuTTY 设置已启用 GSSAPI,这将直接将您登录到主机,并且 Windows 将在此过程中提取您的 TGT。从技术上讲,您可以用命令代替命令puttycmdrunas我更喜欢保持通用 cmd 提示符打开,以便我也可以将它用于其他连接或应用程序。

答案2

因此,这里的答案是使用像 MIT 的 Kerberos for Windows 这样的软件包(如果在 Windows 机器上)来获取票证。然后,PuTTY 将尝试使用此密钥 - 并且您可以明确确保通过 PuTTY 配置中的 GSSAPI 身份验证选项确认 MIT 堆栈。

在 Unix 上,您可以使用 CLI 中的常规 kinit 工具来获取票证。

相关内容