使用 jsch 连接到 azure 中托管的 sftp 服务器时连接重置

Fab*_*ndl 5 java ssh jsch azure azure-storage

我们目前正在使用一个云产品,该产品在内部使用 JSCH 连接到外部 sftp 源。我正在调查尝试连接到 azure sftp 时遇到的连接重置异常。

使用wireshark,我确定问题是在我们发送客户端:密钥交换初始化后发生的。与 filezilla 建立相同的连接就没有这个问题。

比较 jsch 和 filezilla 的软件包,我没有发现明显的问题,但我不是 ssh 协议的专家。我将在下面发布这两个请求,如果有人能给我任何指示,我将不胜感激。

向 JSCH 请求(不起作用)

向 Filezilla 请求(工作中)

与 Filezilla 的响应(工作中)

日志输出见下图:

INFO: Connecting to ***** port 22
INFO: Connection established
INFO: Remote version string: SSH-2.0-AzureSSH_1.0.0
INFO: Local version string: SSH-2.0-JSCH-0.1.54
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
INFO: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
INFO: CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
INFO: SSH_MSG_KEXINIT sent
INFO: Disconnecting from **** port 22
com.jcraft.jsch.JSchException: Session.connect: java.net.SocketException: Connection reset
Run Code Online (Sandbox Code Playgroud)

编辑:按照詹姆斯的建议,我得到了相同的结果,连接关闭,但客户端请求仅将支持的算法作为有效负载。因此,我尝试通过设置 jsch 配置来复制 FileZilla 请求,无论 jsch 是否实际上支持该算法,我只是想看看是否有任何响应。

但由于某种原因连接仍然被终止

修改后的jsch请求

Fab*_*ndl 2

我想为遇到相同问题的任何人发布一个快速更新,我在微软问答网站上打开了一个类似的问题,看起来这是 azure 方面的问题,他们正在努力修复 GA 微软问答