Java 使用JSch执行SFTP时无法连接到安全通道
我正在尝试实现JSch,以便从远程windows sftp服务器到Linux检索文件Java 使用JSch执行SFTP时无法连接到安全通道,java,exception,sftp,jsch,Java,Exception,Sftp,Jsch,我正在尝试实现JSch,以便从远程windows sftp服务器到Linux检索文件 Session session = null; Channel channel = null; ChannelSftp channelSftp = null; try{ JSch jsch = new JSch(); session = jsch.getSession("userName","hostName",22);
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
try{
JSch jsch = new JSch();
session = jsch.getSession("userName","hostName",22);
session.setPassword("password");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
System.out.println(session.sendKeepAliveMsg());
channel = session.openChannel("sftp");
channel.connect();
}catch(Exception e){
e.printstacktrace();
}
运行此代码时,我遇到以下异常
com.jcraft.jsch.JSchException: java.io.IOException: inputstream is closed
at com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:288)
at com.jcraft.jsch.Channel.connect(Channel.java:152)
调试时,我发现:
start();
通道类中的方法正在抛出异常。有什么我可以阻止的吗?我不明白为什么什么都不做就有这个方法。在连接之前,尝试将您的频道转换为ChannelSft:
Channel channel = session.openChannel("sftp");
ChannelSftp channelSftp = (ChannelSftp) channel;
channelSftp.connect();
嘿,我很抱歉把它标记为已修复……我早就修复好了。。谢谢你的回答,虽然我也有同样的问题。我从两个方面进行了调查;1.与发生异常一样,我发现我的应用程序发送了带有重置平面集的TCP数据包(这可能表明会话中存在一些问题)。我的应用程序的实现与上面的症状完全相同。我的疑问是,在异常堆栈跟踪方面,ChannelSftp的start()方法最终被调用,那么在调用connect()方法之前将channel对象强制转换为ChannelSftp的确切原因是什么呢。谢谢你们hint@Quintus.Zhou铸造与否没有任何区别。实现没有改变。我也遇到了同样的问题,不管它是否在任何情况下被优先铸造,我都会遇到。