@Holiday_ 你好,想跟你请教个问题:
远程服务器是windows,我也正确安装开启了ssh服务,我本地用客户端putty可以连接上,但是我本地用java也可以创建session,但是下面执行一个命令就会报错session.execCommand("cmd.exe /c \"ipconfig\"");
java.io.IOException: The execute request failed.
at ch.ethz.ssh2.channel.ChannelManager.requestExecCommand(ChannelManager.java:703)
at ch.ethz.ssh2.Session.execCommand(Session.java:249)
at com.tekview.apex.nms.nbu.TestRemoteConnect.main(TestRemoteConnect.java:32)
Caused by: java.io.IOException: This SSH2 channel is not open (The connection is being shutdown)
at ch.ethz.ssh2.channel.ChannelManager.waitForChannelSuccessOrFailure(ChannelManager.java:174)
at ch.ethz.ssh2.channel.ChannelManager.requestExecCommand(ChannelManager.java:699)
... 2 more
你好!在windows系统的远程服务器中,SSH服务我采用的密码认证的方式,使用密码连接后,我打开会话执行了 session.execCommand("ipconfig");然后得到了输出结果。
Stringhostname="192.168.0.80";
intport=22;
Stringusername="Administrator";
Stringpassword="nihao";
//指明连接主机的IP地址
Connectionconn=newConnection(hostname,port);
Sessionssh=null;
try{
//连接到主机
conn.connect();
//使用用户名和密码校验
booleanisconn=conn.authenticateWithPassword(username,password);
if(!isconn){
System.out.println("用户名称或者是密码不正确");
}else{
System.out.println("OK");
ssh=conn.openSession();
ssh.execCommand("ipconfig");
//将Terminal屏幕上的文字全部打印出来
InputStreamis=newStreamGobbler(ssh.getStdout());
BufferedReaderbrs=newBufferedReader(newInputStreamReader(is));
while(true){
Stringline=brs.readLine();
if(line==null){
break;
}
System.out.println(line);
}
}
}catch(Throwablee){
e.printStackTrace();
}finally{
ssh.close();
conn.close();
}
基本和你一样,但是还是报错
freessh安装的环境是64位windows,客户端工具xshell都连不上
换成32位windows,安装freessh,是可以运行以上代码的网友们,该问题已解决!以上代码没问题,只要配好ssh服务即可。你好,我也遇到了同样的问题,请问如何解决的,多谢版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。