1

Java セキュア チャネル (JSCh) を使用して SFTP 接続を確立しようとしています。私のソフトウェア スタックは、Red Hat Enterprise Server 5.0、JRE 6.0、および JSch v0.1.44 です。主なサーバー ソフトウェア スタック (接続しようとしている) は、Windows Server 2008 と GlobalScape の最新バージョンです。それに接続しようとすると、

com.jcraft.jsch.JSchException: Algorithm negotiation fail 
    at com.jcraft.jsch.Session.receive_kexinit(Session.java:529) 
    at com.jcraft.jsch.Session.connect(Session.java:291) 

JSch ロギングを有効にすると、この同じ接続に対して次のようになります。

0000001d SystemErr     R INFO: Connecting to xxx.xxx.xxx.157 port 22
0000001d SystemErr     R INFO: Connection established
0000001d SystemErr     R INFO: Remote version string: SSH-2.0-1.36_sshlib GlobalSCAPE
0000001d SystemErr     R INFO: Local version string: SSH-2.0-JSCH-0.1.44
0000001d SystemErr     R INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-    cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
0000001d SystemErr     R INFO: aes256-ctr is not available.
0000001d SystemErr     R INFO: aes192-ctr is not available.
0000001d SystemErr     R INFO: aes256-cbc is not available.
0000001d SystemErr     R INFO: aes192-cbc is not available.
0000001d SystemErr     R INFO: arcfour256 is not available.
0000001d SystemErr     R INFO: SSH_MSG_KEXINIT sent
0000001d SystemErr     R INFO: SSH_MSG_KEXINIT received
0000001d SystemErr     R INFO: Disconnecting from xxx.xxx.xxx.157 port 22

サーバーに接続しているように見えるので、実際にメッセージを送受信できますが、クライアントがサーバーのメッセージ提案とクライアントのメッセージ提案を一致させようとすると、例外がスローされます。

これを、以前の GlobalScape ソフトウェアおよび Windows Server 2003 を使用したサーバーへの接続に成功した JSch ログと比較します。

0000001e SystemErr     R INFO: Connecting to xxx.xxx.xxx.156 port 22
0000001e SystemErr     R INFO: Connection established
0000001e SystemErr     R INFO: Remote version string: SSH-2.0-1.36 sshlib: GlobalScape
0000001e SystemErr     R INFO: Local version string: SSH-2.0-JSCH-0.1.44
0000001e SystemErr     R INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256
0000001e SystemErr     R INFO: aes256-ctr is not available.
0000001e SystemErr     R INFO: aes192-ctr is not available.
0000001e SystemErr     R INFO: aes256-cbc is not available.
0000001e SystemErr     R INFO: aes192-cbc is not available.
0000001e SystemErr     R INFO: arcfour256 is not available.
0000001e SystemErr     R INFO: SSH_MSG_KEXINIT sent
0000001e SystemErr     R INFO: SSH_MSG_KEXINIT received
0000001e SystemErr     R INFO: kex: server->client aes128-cbc hmac-md5 none
0000001e SystemErr     R INFO: kex: client->server aes128-cbc hmac-md5 none
0000001e SystemErr     R INFO: SSH_MSG_KEXDH_INIT sent
0000001e SystemErr     R INFO: expecting SSH_MSG_KEXDH_REPLY
0000001e SystemErr     R INFO: ssh_dss_verify: signature true
0000001e SystemErr     R WARN: Permanently added 'xxx.xxx.xxx.156' (DSA) to the list of known hosts.
0000001e SystemErr     R INFO: SSH_MSG_NEWKEYS sent
0000001e SystemErr     R INFO: SSH_MSG_NEWKEYS received
0000001e SystemErr     R INFO: SSH_MSG_SERVICE_REQUEST sent
0000001e SystemErr     R INFO: SSH_MSG_SERVICE_ACCEPT received
0000001e SystemErr     R INFO: Authentications that can continue: publickey,keyboard-inteactive,password
0000001e SystemErr     R INFO: Next authentication method: publickey
0000001e SystemErr     R INFO: Authentications that can continue: password
0000001e SystemErr     R INFO: Next authentication method: password
0000001e SystemErr     R INFO: Authentication succeeded (password).

したがって、もう一度接続して SSH_MSG_KEXINIT を交換することができますが、ここではクライアントとサーバーの提案が一致し、例外はスローされません

sftp セキュリティは、公開/秘密キーとユーザー名/パスワードを使用しています。

WinSCP、Filezilla、および Linux コマンド ラインを使用して接続できます (Java アプリケーションが実行されている同じサーバーから)。

SFTP サーバーのシステム管理者と話し、ユーザー名とパスワードを使用してみましたが、同じ例外とログが表示されます。

システム管理者は、両方のサーバーの違いは GlobalScape のバージョンであり、現在は Microsoft 2008 Server であると教えてくれました。

それで、誰でもこれに取り組む方法について何か考えがありますか?

よろしくお願いします!

4

1 に答える 1

0

あなたが抱えている問題は、すべての有効な暗号アルゴリズム SFTP サーバーに関する globalscape とは関係ありません。すべてのsftpサーバーには、それらが同意するいくつかの暗号アルゴリズムがあるため、それらのエンコーディングと暗号アルゴリズムがない場合、暗号アルゴリズムは機能しません他のすべてのSFTPソフトウェアには、sftpサーバー構成に従って使用する組み込みの暗号アルゴリズムがあり、最新の256ビットに変更されます暗号アルゴリズムとあなたはすべて設定されています

https://enterprisedt.com/products/edtftpjssl/doc/manual/html/howtousesftpchoosingalgorithms.html

公開鍵アルゴリズム

サーバー認証の優先公開鍵アルゴリズムとして、DSA または RSA のいずれか、またはその両方を設定できます。たとえば、RSA が設定されている場合、サーバーは RSA 公開鍵をクライアントに提示します (もちろん、サーバーが RSA キーをサポートしている場合 - 一部のサーバーはサポートしていません)。以下のコードは、RSA のみを設定する方法を示しています。最初にすべての鍵ペア アルゴリズムを無効にしてから、RSA を有効にします。

ftp.disableAllAlgorithms(SSHFTPAlgorithm.KEY_PAIR); ftp.setAlgorithmEnabled(SSHFTPAlgorithm.KEY_RSA, true);

デフォルトでは、DSA と RSA の両方が有効になっています。

暗号アルゴリズム

暗号アルゴリズムは、SFTP データとコマンドの暗号化を実行するために使用される対称アルゴリズムです。以下のコードは、トリプル DES を暗号アルゴリズムとして設定する方法を示しています (他のすべてを無効にします)。

ftp.disableAllAlgorithms(SSHFTPAlgorithm.CIPHER); ftp.setAlgorithmEnabled(SSHFTPAlgorithm.CIPHER_3DES_CBC、真);

デフォルトでは、すべての暗号アルゴリズムが有効になっています。

于 2016-09-06T20:02:38.393 に答える