Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Jsch 0.1.42升级到0.1.54会生成到远程服务器的连接超时_Java_Sftp_Jsch_Spring Integration Sftp - Fatal编程技术网

Java 将Jsch 0.1.42升级到0.1.54会生成到远程服务器的连接超时

Java 将Jsch 0.1.42升级到0.1.54会生成到远程服务器的连接超时,java,sftp,jsch,spring-integration-sftp,Java,Sftp,Jsch,Spring Integration Sftp,我们使用Spring批处理管理来处理连接到不同远程SFTP服务器的不同作业。我们有两个SBA,所以我实际上已经把这个工作从一个旧版本转移到了一个新版本 所有作业都在Jcraft中使用JSch,我已经将这个版本从0.1.42升级到了0.1.54。除了这项最新的工作之外,所有的工作都很好,他们之间的联系没有任何问题 在这份工作中,我得到了一个连接超时,我不明白为什么 另一个(大)问题是,我不能从我自己的计算机本地解决这个问题,我甚至不能从我的计算机通过WinSCP登录到这个远程SFTP帐户来验证它自

我们使用Spring批处理管理来处理连接到不同远程SFTP服务器的不同作业。我们有两个SBA,所以我实际上已经把这个工作从一个旧版本转移到了一个新版本

所有作业都在Jcraft中使用JSch,我已经将这个版本从0.1.42升级到了0.1.54。除了这项最新的工作之外,所有的工作都很好,他们之间的联系没有任何问题

在这份工作中,我得到了一个连接超时,我不明白为什么

另一个(大)问题是,我不能从我自己的计算机本地解决这个问题,我甚至不能从我的计算机通过WinSCP登录到这个远程SFTP帐户来验证它自己的连接。SFTP服务器的所有者说,他们可以在防火墙中看到我的连接,但不能超过或不连接到他们的SFTP。只有在他们的SFTP服务器上才能看到成功的连接,所以他们看不到为什么我无法连接,因为我的连接失败了

我在Java中添加了新的策略,包括Java8和Java7。 我还是不能做我的工作。我在StackOverflow和Google上进行了搜索,但没有找到任何解决方案。 我在新作业和旧作业中都使用Springframework集成sftp会话和DefaultSftpSessionFactory版本2.0.3。我们使用Java7和Tomcat8,并在Tomcat中添加了“-Dhttps.protocols=TLSv1.1,TLSv1.2”

这是Jsch版本为0.1.54的新作业连接到SFTP服务器时的日志

com.jcraft.jsch (log:52)  - Connecting to XX.XXX.XX.XX port 22
com.jcraft.jsch (log:52)  - Connection established
com.jcraft.jsch (log:52)  - Remote version string: SSH-2.0-1.86 FRES
com.jcraft.jsch (log:52)  - Local version string: SSH-2.0-JSCH-0.1.54
com.jcraft.jsch (log:52)  - CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
com.jcraft.jsch (log:52)  - CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
com.jcraft.jsch (log:52)  - diffie-hellman-group14-sha1 is not available.
com.jcraft.jsch (log:52)  - CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
com.jcraft.jsch (log:52)  - SSH_MSG_KEXINIT sent
com.jcraft.jsch (log:52)  - SSH_MSG_KEXINIT received
com.jcraft.jsch (log:52)  - kex: server: diffie-hellman-group14-sha256,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
com.jcraft.jsch (log:52)  - kex: server: ssh-rsa
com.jcraft.jsch (log:52)  - kex: server: aes256-cbc,aes256-ctr,3des-cbc
com.jcraft.jsch (log:52)  - kex: server: aes256-cbc,aes256-ctr,3des-cbc
com.jcraft.jsch (log:52)  - kex: server: hmac-sha2-256,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
com.jcraft.jsch (log:52)  - kex: server: hmac-sha2-256,hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96
com.jcraft.jsch (log:52)  - kex: server: zlib,none
com.jcraft.jsch (log:52)  - kex: server: zlib,none
com.jcraft.jsch (log:52)  - kex: server: 
com.jcraft.jsch (log:52)  - kex: server: 
com.jcraft.jsch (log:52)  - kex: client: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
com.jcraft.jsch (log:52)  - kex: client: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
com.jcraft.jsch (log:52)  - kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
com.jcraft.jsch (log:52)  - kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc
com.jcraft.jsch (log:52)  - kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
com.jcraft.jsch (log:52)  - kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96
com.jcraft.jsch (log:52)  - kex: client: none
com.jcraft.jsch (log:52)  - kex: client: none
com.jcraft.jsch (log:52)  - kex: client: 
com.jcraft.jsch (log:52)  - kex: client: 
com.jcraft.jsch (log:52)  - kex: server->client 3des-cbc hmac-md5 none
com.jcraft.jsch (log:52)  - kex: client->server 3des-cbc hmac-md5 none
com.jcraft.jsch (log:52)  - SSH_MSG_KEX_DH_GEX_REQUEST(1024<1024<1024) sent
com.jcraft.jsch (log:52)  - expecting SSH_MSG_KEX_DH_GEX_GROUP
com.jcraft.jsch (log:52)  - Disconnecting from XX.XXX.XX.XX port 22
com.jcraft.jsch (log:52)  - Connecting to XX.XXX.XX.XX port 22
com.jcraft.jsch (log:52)  - Connection established
com.jcraft.jsch (log:52)  - Remote version string: SSH-2.0-1.86 FRES
com.jcraft.jsch (log:52)  - Local version string: SSH-2.0-JSCH-0.1.42
com.jcraft.jsch (log:52)  - CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
com.jcraft.jsch (log:52)  - SSH_MSG_KEXINIT sent
com.jcraft.jsch (log:52)  - SSH_MSG_KEXINIT received
com.jcraft.jsch (log:52)  - kex: server->client 3des-cbc hmac-md5 none
com.jcraft.jsch (log:52)  - kex: client->server 3des-cbc hmac-md5 none
com.jcraft.jsch (log:52)  - SSH_MSG_KEXDH_INIT sent
com.jcraft.jsch (log:52)  - expecting SSH_MSG_KEXDH_REPLY
com.jcraft.jsch (log:52)  - ssh_rsa_verify: signature true
com.jcraft.jsch (log:52)  - Host 'XX.XXX.XX.XX' is known and mathces the RSA host key
com.jcraft.jsch (log:52)  - SSH_MSG_NEWKEYS sent
com.jcraft.jsch (log:52)  - SSH_MSG_NEWKEYS received
com.jcraft.jsch (log:52)  - SSH_MSG_SERVICE_REQUEST sent
com.jcraft.jsch (log:52)  - SSH_MSG_SERVICE_ACCEPT received
com.jcraft.jsch (log:52)  - Authentications that can continue: keyboard-interactive,password
com.jcraft.jsch (log:52)  - Next authentication method: keyboard-interactive
com.jcraft.jsch (log:52)  - Authentications that can continue: password
com.jcraft.jsch (log:52)  - Next authentication method: password
com.jcraft.jsch (log:52)  - Authentication succeeded (password).
job.FtpFileFetcher (downloadFile:62)  - Listing remote directory: .
job.FtpFileFetcher (downloadFile:64)  - Found 2 entries in: ., 
job.FtpFileFetcher (filterEntries:139)  - file: file_20190218221932.xml attributes: -rw-rw-rw- 0 0 3369 Mon Feb 18 22:19:33 CET 2019
job.FtpFileFetcher (filterEntries:139)  - file: file_20190219214922.xml attributes: -rw-rw-rw- 0 0 3369 Tue Feb 19 21:49:22 CET 2019
job.FtpFileFetcher (downloadFile:66)  - Found 2 files in: ., matching pattern: file.\d{14}.xml 
job.FtpFileFetcher (downloadFile:71)  - Fetching matching file file_20190219214922.xml to local directory K:/files
job.FtpFileFetcher (executeDownload:104)  - Downloading remote file ./file_20190219214922.xml to K:\files\file_20190219214922.xml
com.jcraft.jsch (log:52)  - Disconnecting from XX.XXX.XX.XX port 22
我看到了不同之处,但我不明白哪里不对,我希望这里的人能帮助我。 如果你需要看更多的东西,请询问
谢谢

首先,
https。协议
仅适用于https,即HTTP over TLS。Jsch实现了SSH和SFTP,它们是完全独立的,与HTTPS、HTTP和TLS无关

您的系统提供的DH_GEX(组交换)最小值为1024 pref=1024 max=1024,因为Java7不支持大于1024位的DH。服务器可能不喜欢这种情况,因为DH大小1024现在被认为是不安全的(根据NIST的数据,自2014年以来,其他的有所不同)。如果您可以移动到Java8(或更高版本),它应该会解决这个问题,或者如果您有OpenJDK或付费支持,OracleJDK 7u171也会按照发行说明进行(我还没有测试)

即使配置了group14,您的客户机也没有提供它,可能是出于同样的原因;请参阅行
diffie-hellman-group14-sha1不可用。
但是,服务器确实提供group1,尽管它只有1024位,可能是为了向后兼容;如果无法按上述方式修复Java,请尝试将Kex配置为排除(两个)组交换,并保留group1:

session.setConfig(conf);
// with a Properties that includes
conf.put("kex","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1");
// or if you prefer just 
conf.put("kex","diffie-hellman-group1-sha1");
// since server doesn't agree to any ecdh anyway

首先,
https.protocols
仅适用于https,即TLS上的HTTP。Jsch实现了SSH和SFTP,它们是完全独立的,与HTTPS、HTTP和TLS无关

您的系统提供的DH_GEX(组交换)最小值为1024 pref=1024 max=1024,因为Java7不支持大于1024位的DH。服务器可能不喜欢这种情况,因为DH大小1024现在被认为是不安全的(根据NIST的数据,自2014年以来,其他的有所不同)。如果您可以移动到Java8(或更高版本),它应该会解决这个问题,或者如果您有OpenJDK或付费支持,OracleJDK 7u171也会按照发行说明进行(我还没有测试)

即使配置了group14,您的客户机也没有提供它,可能是出于同样的原因;请参阅行
diffie-hellman-group14-sha1不可用。
但是,服务器确实提供group1,尽管它只有1024位,可能是为了向后兼容;如果无法按上述方式修复Java,请尝试将Kex配置为排除(两个)组交换,并保留group1:

session.setConfig(conf);
// with a Properties that includes
conf.put("kex","ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1");
// or if you prefer just 
conf.put("kex","diffie-hellman-group1-sha1");
// since server doesn't agree to any ecdh anyway

“我的连接在他们的防火墙中,但不在防火墙之外,也不连接到他们的SFTP”——他们的SSH/SFTP服务器已经响应了(
远程版本字符串:SSH-2.0-1.86 FRES
+
SSH\u MSG\u KEXINIT received
)——所以这不可能是真的,即使是真的,他们的防火墙不允许进一步连接到他们的SSH/SFTP服务器,这不是你的问题。我联系了他们,他们现在说他们不会记录失败的尝试,我觉得这有点奇怪。为什么您只想成功记录尝试…?“我的连接在他们的防火墙中,但没有超出防火墙,也没有连接到他们的SFTP”--他们的SSH/SFTP服务器已经响应(
远程版本字符串:SSH-2.0-1.86 FRES
+
SSH\u MSG\u KEXINIT received
)--所以这不可能是真的,即使是真的,他们的防火墙不允许进一步连接到他们的SSH/SFTP服务器,这不是你的问题。我联系了他们,他们现在说他们不会记录失败的尝试,我觉得这有点奇怪。为什么您只希望成功记录尝试…?感谢您提供此解决方案。我已经在我们自己的测试环境中尝试过了,我没有因为这个改变而得到任何错误。但是我以前也没有得到任何错误。我仍然只能从远程服务器获得连接超时,因此,当我们重新启动并运行时,我必须对此进行测试:)再次感谢您,我真的认为这是解决原始错误的方法:)感谢您提供此解决方案。我已经在我们自己的测试环境中尝试过了,我没有因为这个改变而得到任何错误。但是我以前也没有得到任何错误。我仍然只能从远程服务器获得连接超时,因此,当我们重新启动并运行时,我必须对此进行测试:)再次感谢您,我真的认为这是原始错误的解决方案:)