Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Jsch通过SSH运行需要密码的命令_Java_Ssh_Jsch - Fatal编程技术网

Java 如何使用Jsch通过SSH运行需要密码的命令

Java 如何使用Jsch通过SSH运行需要密码的命令,java,ssh,jsch,Java,Ssh,Jsch,我正在尝试使用JSch在目标主机上运行命令,我希望能够指示密码短语,例如:“sudo echo hello”,然后输入当前用户的密码 我不明白如何正确地与提示符交互。下面的代码显示了我尝试提供密码的两种方式,它们都失败并显示消息: sudo:不存在tty,也未指定askpass程序 我正在处理这个问题: JSch jsch=new JSch(); String host="192.168.0.17"; String user="xxx"; String passwd="xxx"; Sessio

我正在尝试使用JSch在目标主机上运行命令,我希望能够指示密码短语,例如:“sudo echo hello”,然后输入当前用户的密码

我不明白如何正确地与提示符交互。下面的代码显示了我尝试提供密码的两种方式,它们都失败并显示消息:

sudo:不存在tty,也未指定askpass程序

我正在处理这个问题:

JSch jsch=new JSch();
String host="192.168.0.17";
String user="xxx";
String passwd="xxx";

Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
session.setConfig("StrictHostKeyChecking", "no"); 
session.connect();  

ChannelExec channel=(ChannelExec)session.openChannel("exec");
channel.setCommand("sudo echo hello");
channel.setErrStream(System.err);
channel.connect();


int id = 1;
// must write on output stream?
if(id==0){
channel.getOutputStream().write(passwd.getBytes());
}
// must read on input stream?
else if(id==1){
channel.getInputStream().read(passwd.getBytes());
}

channel.disconnect();
谢谢你的建议

试试看怎么样