Jschを使用して SFTP サーバーに接続するこの単純な Java プログラムがあります。
Java 1.4.2 では「認証失敗」例外で接続が失敗しますが、Java 1.7 では問題なく接続されます。
try {
JSch jsch = new JSch();
jsch.setKnownHosts(KNOWN_HOSTS_PATH);
jsch.addIdentity(PRIVATE_KEY_PATH, PASSPHRASE);
Session session = jsch.getSession(USERNAME, HOSTNAME, 22);
session.connect(2500);
Channel channel = session.openChannel("shell");
channel.setInputStream(System. in );
channel.setOutputStream(System.out);
channel.connect();
} catch (Exception e) {
e.printStackTrace(System.err);
}
私が使っている鍵はssh-rsa 4096
ビットキーです。キー ファイルは.pub
、秘密キーと同じディレクトリに存在します。
ロガーを接続すると、例外 ( で発生channel.connect();
)の前に次のメッセージが表示されます。
情報: <redacted> ポート 22 に接続しています 情報: 接続が確立されました 情報: リモート バージョン文字列: SSH-2.0-OpenSSH_5.1p1 Debian-5 情報: ローカル バージョン文字列: SSH-2.0-JSCH-0.1.42 情報: CheckCiphers: aes256-ctr、aes192-ctr、aes128-ctr、aes256-cbc、aes192-cbc、aes128-cbc、3des-ctr、arcfour、arcfour128、arcfour256 情報: arcfour は利用できません。 情報: arcfour128 は利用できません。 情報: arcfour256 は利用できません。 情報: SSH_MSG_KEXINIT が送信されました 情報: SSH_MSG_KEXINIT を受信しました 情報: kex: サーバー-> クライアント aes128-ctr hmac-md5 なし INFO: kex: client->server aes128-ctr hmac-md5 none 情報: SSH_MSG_KEXDH_INIT が送信されました 情報: SSH_MSG_KEXDH_REPLY を期待しています 情報: ssh_rsa_verify: 署名は true 情報: ホスト '<redacted>' は既知であり、RSA ホスト キーを計算します 情報: SSH_MSG_NEWKEYS が送信されました 情報: SSH_MSG_NEWKEYS を受信しました 情報: SSH_MSG_SERVICE_REQUEST が送信されました 情報: SSH_MSG_SERVICE_ACCEPT を受信しました 情報: 続行できる認証: publickey、keyboard-interactive、password INFO: 次の認証方法: publickey 情報: 続行できる認証: パスワード 情報: 次の認証方法: パスワード 情報: <redacted> ポート 22 から切断しています com.jcraft.jsch.JSchException: 認証失敗 com.jcraft.jsch.Session.connect (Session.java:452) で TestJsch.main (TestJsch.java:19) で
Java 1.7 で同じプログラムを実行すると、次のように表示されます。
情報: <redacted> ポート 22 に接続しています 情報: 接続が確立されました 情報: リモート バージョン文字列: SSH-2.0-OpenSSH_5.1p1 Debian-5 情報: ローカル バージョン文字列: SSH-2.0-JSCH-0.1.42 情報: CheckCiphers: aes256-ctr、aes192-ctr、aes128-ctr、aes256-cbc、aes192-cbc、aes128-cbc、3des-ctr、arcfour、arcfour128、arcfour256 情報: SSH_MSG_KEXINIT が送信されました 情報: SSH_MSG_KEXINIT を受信しました 情報: kex: サーバー-> クライアント aes128-ctr hmac-md5 なし INFO: kex: client->server aes128-ctr hmac-md5 none 情報: SSH_MSG_KEXDH_INIT が送信されました 情報: SSH_MSG_KEXDH_REPLY を期待しています 情報: ssh_rsa_verify: 署名は true 情報: ホスト '<redacted>' は既知であり、RSA ホスト キーを計算します 情報: SSH_MSG_NEWKEYS が送信されました 情報: SSH_MSG_NEWKEYS を受信しました 情報: SSH_MSG_SERVICE_REQUEST が送信されました INFO: SSH_MSG_SERVICE_ACCEPT を受信しましたINFO: 続行できる認証: publickey、keyboard-interactive、password INFO: 次の認証方法: publickey 情報: 認証に成功しました (公開鍵)。 Linux <編集済み> 2.6.26-2-amd64 #1 SMP Mon Jun 13 16:29:33 UTC 2011 x86_64 <サーバーウェルカムメッセージが続きます>
1.4 VM 用の Java Cryptography Extensions (JCE) をインストールしました。
その問題の原因は何ですか?