繁体   English   中英

通过ssh运行sudo命令

[英]Run sudo command via ssh

我正在尝试从远程Linux机器上的Java代码运行命令sudo -u [USER] [COMMAND] ,但没有任何反应。 我使用ganymed-ssh2 jar 当我在不使用sudo的情况下运行命令时,它的工作非常完美。

另外,如果我从Linux机器上运行sudo -u [USER] [COMMAND] ,它也可以正常运行。 我如何从Java运行此命令?

Connection conn= SshConnection.GetConnection(hostname, username, password)

Session sess= conn.openSession(); 

sess.execCommand(command);

您需要获取安全的流并通过密码。

Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("sudo -S -p '' " + command);
channel.setInputStream(null);
OutputStream out = channel.getOutputStream();
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
((ChannelExec) channel).setPty(true);
channel.connect();
out.write((password + "\n").getBytes());
out.flush();;

从这里获取: http : //codeflex.co/java-run-sudo-command-on-remote-linux-host/

仅当服务器上的sudoers配置允许该给定用户以其他用户的名义执行的特定命令运行而NOPASSWD输入密码(即NOPASSWD选项)时,才可以远程运行此命令。 sudo密码输入只能是键盘交互的,不能远程进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM