簡體   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