您好我正在使用ganymed-ssh2 java库在linux工作站中成功执行远程命令。
但是现在有一种情况我需要执行一个命令,但这要求我输入一些密码......如:
sudo /usr/bin/some_process
please enter your password:
我曾经以这种方式实现远程cmd执行:
Session sess = conn.openSession();
sess.execCommand("uname -a && date && uptime && who");
System.out.println("Here is some information about the remote host:");
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
我担心执行此库需要密码的命令是不可能的。
有人可以给我一个解决方案或替代方案来允许这个???
THX!
答案 0 :(得分:2)
假设有一个sess.getStdin()
,您应该能够输入sudo命令的密码。
答案 1 :(得分:1)
最简单的解决方案是向用户提供Java程序登录,以便能够在不输入密码的情况下运行该sudo命令。您可以通过在主机上运行visudo并在给定命令后输入NOPASSWD来实现。有关详细信息,请参阅man 8 visudo
。
答案 2 :(得分:0)
最简单的方法是使用public key authentication。这样你就不需要密码了。
编辑:我误导了这个问题是关于SSH的,实际上这是关于sudo的。在这种情况下,kojiro的解决方案是正确的:编辑/etc/sudoers
文件,使用NOPASSWD
标志。