目前,我能夠通過使用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();