GNU/Linux >> Linux の 問題 >  >> Linux

SSH でアルゴリズム ネゴシエーションが失敗する問題を解決する方法


異なるバージョンの ssh にあるローカル ホストからリモート ホストに ssh を実行しているときに、「アルゴリズム ネゴシエーションに失敗しました」というメッセージが表示される場合があります。この投稿では、ssh クライアントからこの問題を解決する方法を説明します。


1.リモートホストに ssh できません :この例では、ローカル ホストからリモート ホストへの ssh を実行しようとすると、以下に示すように「アルゴリズム ネゴシエーションに失敗しました」というエラー メッセージが表示されます。ローカル ホストが ssh2 クライアントを実行していることに注意してください。

[local-host]$ ssh -l jsmith remote-host
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).

[local-host]$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu
[local-host]$ ls -l /usr/local/bin/ssh
lrwxrwxrwx  1 root root 4 Mar 10 22:04 /usr/local/bin/ssh -> ssh2


2. SSH からエラー メッセージに関する詳細なデバッグ情報を取得する . -v パラメータを ssh クライアントに渡して、追加のデバッグ情報を表示します。これは、以下に示すように、この問題をさらにトラブルシューティングするのに役立ちます。

[local-host]$ ssh -v -l jsmith remote-host
debug: SshConfig/sshconfig.c:2838/ssh2_parse_config_ext: Metaconfig parsing stopped at line 3.
debug: SshConfig/sshconfig.c:637/ssh_config_set_param_verbose: Setting variable 'VerboseMode' to 'FALSE'.
debug: SshConfig/sshconfig.c:3130/ssh_config_read_file_ext: Read 17 params from config file.
debug: Ssh2/ssh2.c:1707/main: User config file not found, using defaults. (Looked for '/home/jsmith/.ssh2/ssh2_config')
debug: Connecting to 192.168.101.107, port 22... (SOCKS not used)
debug: Ssh2Transport/trcommon.c:3676/ssh_tr_create: My version: SSH-1.99-3.2.9.1 SSH Secure Shell (non-commercial)
debug: client supports 2 auth methods: 'publickey,password'
debug: Ssh2Common/sshcommon.c:537/ssh_common_wrap: local ip = 192.168.1.2, local port = 59514
debug: Ssh2Common/sshcommon.c:539/ssh_common_wrap: remote ip = 192.168.1.3, remote port = 22
debug: SshConnection/sshconn.c:1945/ssh_conn_wrap: Wrapping...
debug: SshReadLine/sshreadline.c:2427/ssh_readline_eloop_initialize: Initializing ReadLine...
debug: Remote version: SSH-2.0-OpenSSH_5.0
debug: OpenSSH: Major: 5 Minor: 0 Revision: 0
debug: Ssh2Transport/trcommon.c:973/ssh_tr_input_version: All versions of OpenSSH handle kex guesses incorrectly.
debug: Ssh2Transport/trcommon.c:1116/ssh_tr_negotiate_one_alg: Algorithm negotiation failed for c_to_s_compr: client list: zlib vs. server list : none,[email protected]
debug: Ssh2Transport/trcommon.c:1116/ssh_tr_negotiate_one_alg: Algorithm negotiation failed for s_to_c_compr: client list: zlib vs. server list : none,[email protected]
debug: Ssh2Transport/trcommon.c:1367/ssh_tr_negotiate: lang s to c: `', lang c to s: `'
debug: Ssh2Common/sshcommon.c:169/ssh_common_disconnect: DISCONNECT received: Algorithm negotiation failed.
debug: SshReadLine/sshreadline.c:2485/ssh_readline_eloop_uninitialize: Uninitializing ReadLine...
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).
debug: Ssh2Common/sshcommon.c:662/ssh_common_destroy: Destroying SshCommon object.
debug: SshConnection/sshconn.c:1997/ssh_conn_destroy: Destroying SshConn object.

デバッグ メッセージに表示されるこのデバッグ情報メッセージに基づいて:「s_to_c_compr のアルゴリズム ネゴシエーションに失敗しました:クライアント リスト:zlib vs. サーバー リスト:なし,[email protected] 「、クライアント (ローカル ホスト) が zlib 圧縮を使用しており、サーバー (リモート ホスト) が zlib を使用していないことは明らかです。


3.圧縮せずにリモート ホスト SSH に接続して、問題を解決します。 以下に示すように、-o “Compression no” を ssh クライアントに渡して問題を解決してください。

[local-host]$ ssh -o "Compression no" -l jsmith remote-host
jsmith@remote-host's password:
Last login: Wed Jun 25 17:06:31 2008 from 192.168.1.2

[remote-host]$ ssh -V
OpenSSH_5.0p1, OpenSSL 0.9.8g 19 Oct 2007

-o “Compression no” を通過した後、問題なく接続されました。 パラメータを ssh クライアントに追加すると、リモート ホストが、ローカル ホストで実行されていた ssh とは異なる openSSH を使用していることがわかります。これが、アルゴリズム ネゴシエーションが失敗した問題の原因でした。


Linux
  1. 弱い鍵交換アルゴリズム、SSHのCBCモードを無効にする

  2. Sshはメッセージ「x11転送要求がチャネル1で失敗しました」を返しますか?

  3. Ssh – Ssh / scp / sftpユーザーをディレクトリに制限しますか?

  1. Ssh –一般的な複数のSsh接続ファイル処理の問題?

  2. Linux – LinuxでサスペンドからRAMへの問題をデバッグする方法は?

  3. Linux で SSH 経由で X アプリケーションを実行できない

  1. EFS マウントの問題「サーバーの解決に失敗しました:名前またはサービスが不明です」

  2. Letsencrypt が ImportError で失敗しました:インターフェイスという名前のモジュールがありません

  3. 数百回の ssh ログインの失敗