使用 Apache VFS 时如何在 JSch 会话上设置 KEX

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)

Mar*_*ryl 2

JSchSession从其JSch实例继承设置。所有JSch实例实际上共享相同的全局/静态哈希表和设置。

JSch.setConfig所以只需在之前调用 static 即可SftpClientFactory.createConnection

JSch.setConfig("kex", "diffie-hellman-group1-sha1");
Run Code Online (Sandbox Code Playgroud)