使用“执行linux shell命令”;sudo“;使用java,无需输入所需密码

使用“执行linux shell命令”;sudo“;使用java,无需输入所需密码,java,passwords,cmd,sudo,Java,Passwords,Cmd,Sudo,您好,我正在使用ganymed-ssh2 java库在linux工作站上成功地执行远程命令 但现在有一种情况,我需要执行一个命令,但这需要我输入一些密码…比如: sudo /usr/bin/some_process please enter your password: 我曾经以这种方式实现远程cmd执行: Session sess = conn.openSession(); sess.execCommand("uname -a && date && up

您好,我正在使用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();
恐怕无法使用此库执行需要密码的命令

有人可以给我一个解决方案或替代方案来允许这个

谢谢

最简单的方法可能就是使用。这样你就不需要密码了


编辑:我被误导了,以为这个问题是关于SSH的,而实际上是关于sudo的。在这种情况下,kojiro的解决方案是正确的:编辑
/etc/sudoers
文件,使用
NOPASSWD
标志。

最简单的解决方案是让Java程序登录的用户能够在不输入密码的情况下运行sudo命令。您可以通过在主机上运行visudo并在给定命令后输入NOPASSWD来实现这一点。有关更多详细信息,请参见
man 8 visudo

假设存在
sess.getStdin()
,您应该能够通过管道向sudo命令输入密码。

本文的标题有点误导性——听起来您在ssh中遇到了密码问题,但实际上在ssh会话中遇到了密码问题。考虑在主题和/或标签中添加类似“远程SUDO密码条目”之类的内容。