目前,我能够通过使用 JAAS 并获取从运行 Active Directory 的 Windows 服务器发送的票证授予票证来验证 Java 应用程序中的用户。这很容易用Krb5LoginModule
in java 完成。
现在我想从我的 java 应用程序运行一个 ssh 命令并使用我的 TGT 来启用 ssh 不询问密码。我看过一些让 ssh 与 kerberos 一起工作的教程( OpenSSH 和 Kerberoskinit
),但它们用于获取他们的 TGT,并且票证存储在 /tmp/krbcc_XXX 中。然后在生成票证后,他们可以自由地 ssh。
我可以将 TGT 写入磁盘并将其存储在 /tmp/krbcc_XXX 中,或者我可以在 a 中运行 ssh 命令PrivilegedAction
,但是我不知道是否可以工作。有没有公认的方法来做到这一点?
基本上,我想打电话给这样的东西,它不会要求我输入密码:
// Create Command.
List<String> arguments = new ArrayList<String>();
arguments.addAll(Arrays.asList("ssh", "user@host", "xterm"));
// Run SSH command.
ProcessBuilder process = new ProcessBuilder(arguments).start();