В настоящее время я могу аутентифицировать пользователей в java-приложении, используя JAAS и получая билет для выдачи билетов, отправленный с сервера Windows, на котором работает Active Directory.Это легко сделать с помощью Krb5LoginModule
в Java.
Теперь я хотел бы запустить команду ssh из моего java-приложения и использовать мой TGT, чтобы ssh не запрашивал пароль.Я видел несколько обучающих программ ( OpenSSH & Kerberos ) для того, чтобы заставить ssh работать с kerberos, но они используют kinit
, чтобы получить их TGT, и билет хранится в / tmp / krbcc_XXX.Затем, после того, как билет сгенерирован, они могут свободно пользоваться ssh.
Я мог бы записать TGT на диск и сохранить его в / tmp / krbcc_XXX, или я мог запустить команду 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();