通过Java执行SSH(使用基于密钥的身份验证)

时间:2015-07-31 14:17:26

标签: java bash ssh

我正在尝试编写一个帮助应用程序,它将提供我需要连接的服务器列表,然后执行SSH连接命令。

我正在尝试这个:

Process p = Runtime.getRuntime().exec(new String[]{"bash","-c","ssh user@stackoverflow.com "});

它应该做什么,它执行命令。我的服务器只是基于密钥的身份验证,因此SSH通过询问密钥密码来响应。在此阶段,您无法实际交互SSH以输入密码。

我有什么想法可以解决这个问题吗?

提前致谢!

编辑:为了清楚起见,我需要一种方法来转移到一个新的SSH进程,用户可以正确地与ssh进行交互。

1 个答案:

答案 0 :(得分:1)

我不认为炮击孩子的SSH过程会起作用。 IIRC密码提示被发送到控制TTY,因此产生过程无法使用stdin / stdout重定向提供它。

鉴于此,请查看Java SSH客户端库,例如http://www.jcraft.com/jsch/。这是一篇SO帖子,其中包含更多信息:SSH library for Java