FTPサーバーは、より良いセキュリティのために移行を行っています(詳しくはわかりません)。sftpに接続できません:com.jcraft.jsch.JSchException:アルゴリズムのネゴシエーションに失敗しました
アップグレード後、サーバーからファイルをダウンロード/アップロードすることはできません。アップグレード前にうまくいきました。エラーログは言う:
ns0:ClientCould not connect to FTP Server. http://schemas.cordys.com/ftpconnector/1.1Cordys.FTPConnector.Messages.ftpserverConnectionFailedcom.eibus.applicationconnector.ftp.FTPException : Algorithm negotiation fail
at com.eibus.applicationconnector.ftp.CordysSFTPClient.connect(CordysSFTPClient.java:78) at com.eibus.applicationconnector.ftp.FTPCommand.connect(FTPCommand.java:86) at com.eibus.applicationconnector.ftp.FTPTransaction.process(FTPTransaction.java:109) at com.eibus.soap.SOAPTransaction.handleBodyBlock(SOAPTransaction.java:1340) at com.eibus.soap.SOAPTransaction.(SOAPTransaction.java:546) at com.eibus.soap.SOAPTransaction.(SOAPTransaction.java:195) at com.eibus.soap.Processor.onReceive(Processor.java:1024) at com.eibus.soap.Processor.onReceive(Processor.java:997) at com.eibus.connector.nom.Connector.onReceive(Connector.java:483) at com.eibus.transport.NonTransactionalWorkerThreadBody.doWork(NonTransactionalWorkerThreadBody.java:61) at com.eibus.transport.NonTransactionalWorkerThreadBody.run(NonTransactionalWorkerThreadBody.java:26) at com.eibus.util.threadpool.WorkerThread.run(WorkerThread.java:67) Caused by: com.jcraft.jsch.JSchException: Algorithm negotiation fail at com.jcraft.jsch.Session.receive_kexinit(Session.java:520) at com.jcraft.jsch.Session.connect(Session.java:286) at com.jcraft.jsch.Session.connect(Session.java:150) at com.eibus.applicationconnector.ftp.CordysSFTPClient.connectOnce(CordysSFTPClient.java:124) at com.eibus.applicationconnector.ftp.CordysSFTPClient.connect(CordysSFTPClient.java:64) ... 11 more
使用JSCH jarファイルのバージョンは次のとおりです。使用JSCH-0.1.41.jar Javaのバージョンです:
- は我々にはないことを1.7.0_40
注意FTPサーバーを所有しており、そこの設定を変更することはできません。
- Javaのバージョンをアップグレードすると、Googleでいくつかの時間を過ごした後オプション
試行1 ではないですが、私はJSCHジャーバージョンをアップグレードすることは役立つかもしれないことを理解。そこで私は最新のjsch jarを使いました。これはjsch-0.1.54.jarです。
com.eibus.applicationconnector.ftp.FTPException: Session.connect: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) at com.eibus.applicationconnector.ftp.CordysSFTPClient.connect(CordysSFTPClient.java:78) at com.eibus.applicationconnector.ftp.FTPCommand.connect(FTPCommand.java:86) at com.eibus.applicationconnector.ftp.FTPTransaction.process(FTPTransaction.java:109) at com.eibus.soap.SOAPTransaction.handleBodyBlock(SOAPTransaction.java:1340) at com.eibus.soap.SOAPTransaction.(SOAPTransaction.java:546) at com.eibus.soap.SOAPTransaction.(SOAPTransaction.java:195) at com.eibus.soap.Processor.onReceive(Processor.java:1024) at com.eibus.soap.Processor.onReceive(Processor.java:997) at com.eibus.connector.nom.Connector.onReceive(Connector.java:483) at com.eibus.transport.NonTransactionalWorkerThreadBody.doWork(NonTransactionalWorkerThreadBody.java:61) at com.eibus.transport.NonTransactionalWorkerThreadBody.run(NonTransactionalWorkerThreadBody.java:26) at com.eibus.util.threadpool.WorkerThread.run(WorkerThread.java:67) Caused by: com.jcraft.jsch.JSchException: Session.connect: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) at com.jcraft.jsch.Session.connect(Session.java:565) at com.jcraft.jsch.Session.connect(Session.java:183) at com.eibus.applicationconnector.ftp.CordysSFTPClient.connectOnce(CordysSFTPClient.java:124) at com.eibus.applicationconnector.ftp.CordysSFTPClient.connect(CordysSFTPClient.java:64) ... 11 more
試験2:インストール済み無制限強度の管轄ポリシーファイル(www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.htmlこの後、私は次のエラーを取得し始めました)、これも役に立たなかった。同じエラーが発生しました
すべてのポインタが役に立ちます。ここで
は、私は、FTPに接続するために使用していたコードの一部です:
private void connectOnce(FTPConfiguration ftpConfiguration) throws JSchException {
JSch jsch = new JSch();
this.session = jsch.getSession(ftpConfiguration.getUsername(), ftpConfiguration.getServer(), ftpConfiguration.getPort());
this.session.setPassword(ftpConfiguration.getPassword());
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
this.session.setConfig(config);
if (logger.isDebugEnabled()) {
logger.debug("Opening SFTP connection to " + ftpConfiguration.getServer());
}
this.session.connect();
}
あなたは 'session.setClientVersion( "SSH-2.0-OpenSSH_2.5.3")'へのクライアントバージョンを設定することができますか?前回、この問題を解決するのに役立ちました。 – Apolozeus
「アルゴリズムのネゴシエーションが失敗しました」(実際には重複する質問)を解決したので、その部分を削除してください。ちょうどその質問が混乱します。それに応じて質問のタイトルを更新してください! +投稿[JSchログファイル](https://stackoverflow.com/q/47411185/850848)。 –
私は古いjsch瓶でも解決策が見つかるかもしれないと思っています。それが理由です。 裁判で、私は私の調査に関するさらなる情報を提供したがっています。 –