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