我目前正在使用java应用程序通过调用bash的实例在unix框上运行命令,如下所示 -
proc = Runtime.getRuntime().exec("/bin/bash", null, wd);
并且我在Printwriter的框中执行命令,如下所示 -
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
现在,作为一个要求,我需要ssh到另一个主机上,调用该主机的bash实例并运行一些命令。如果可以在不输入密码的情况下完成,那就太棒了。如果没有,我如何让应用程序在合适的时间输入“密码”?读取shh命令的输出并基于此,写出密码似乎并不吸引人。
对上述内容的任何指示都会有很大的帮助。
此致 p1nG
答案 0 :(得分:5)
使用用Java编写的ssh库而不是运行时执行ssh程序。
答案 1 :(得分:1)
您可以使用SSH-2 for java,这似乎是积极维护的。
或者,为password-less authentication设置一个公钥/私钥,并将私钥存储在运行java程序的用户的〜/ .ssh文件夹中。
答案 2 :(得分:0)
您可以设置无密码的SSH身份验证。以下是设置相同内容的分步指南。 http://manjeetdahiya.com/2011/03/03/passwordless-ssh-login/
答案 3 :(得分:-2)
我无法想象你将如何避免提供密码。如果您只是通过某种方式告诉它提供密码对您来说不能提供密码就可以登录到系统,这会破坏任何安全性的价值。保安人员:“你有一个允许你进入这栋楼的身份证吗?”访客:“是的官员,但从钱包里拿出它太麻烦了。”警卫:“哦,好吧,继续前进。”
您可能希望建立套接字连接并干净地来回传递消息,而不是执行。或者正如其他人所指出的那样,使用一个为你做咕噜声工作的图书馆。