我正在尝试编写一个帮助应用程序,它将提供我需要连接的服务器列表,然后执行SSH连接命令。
我正在尝试这个:
Process p = Runtime.getRuntime().exec(new String[]{"bash","-c","ssh user@stackoverflow.com "});
它应该做什么,它执行命令。我的服务器只是基于密钥的身份验证,因此SSH通过询问密钥密码来响应。在此阶段,您无法实际交互SSH以输入密码。
我有什么想法可以解决这个问题吗?
提前致谢!
编辑:为了清楚起见,我需要一种方法来转移到一个新的SSH进程,用户可以正确地与ssh进行交互。
答案 0 :(得分:1)
我不认为炮击孩子的SSH过程会起作用。 IIRC密码提示被发送到控制TTY,因此产生过程无法使用stdin / stdout重定向提供它。
鉴于此,请查看Java SSH客户端库,例如http://www.jcraft.com/jsch/。这是一篇SO帖子,其中包含更多信息:SSH library for Java。