Eva*_*tti 5 java ssh jsch apache-commons-vfs
我正在使用Apache VFS 2.1with JSch 0.1.54(今天的最新版本)来使用SFTP上传文件。
连接时系统抛出“End of IO Stream Read”,完整的堆栈为:
Caused by: com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
at com.jcraft.jsch.Session.connect(Session.java:565)
at com.jcraft.jsch.Session.connect(Session.java:183)
at org.apache.commons.vfs2.provider.sftp.SftpClientFactory.createConnection(SftpClientFactory.java:166)
Run Code Online (Sandbox Code Playgroud)
我在这个线程中找到了解决我的问题的可能解决方案,但它直接与 JSch 一起操作。由于我使用的是 Apache VFS,我无法Session直接访问(至少我认为我不能)。
但如果可以的话,它会是这样的:
session.setConfig("kex", "diffie-hellman-group1-sha1");
Run Code Online (Sandbox Code Playgroud)
查看 Apache VFS 实现,org.apache.commons.vfs2.provider.sftp.SftpClientFactory没有找到设置此属性的方法。
如何使用 Apache VFS API 设置此配置?
日志数据:
session.setConfig("kex", "diffie-hellman-group1-sha1");
Run Code Online (Sandbox Code Playgroud)
JSchSession从其JSch实例继承设置。所有JSch实例实际上共享相同的全局/静态哈希表和设置。
JSch.setConfig所以只需在之前调用 static 即可SftpClientFactory.createConnection:
JSch.setConfig("kex", "diffie-hellman-group1-sha1");
Run Code Online (Sandbox Code Playgroud)