SSH エラー: ID 交換に失敗しました。接続が閉じられました

多くの場合、「ssh_exchange_identification: リモートホストによって接続が閉じられました」というエラーは、「hosts.deny」および「hosts.allow」設定ファイルの問題が原因で発生しますが、他にも原因が考えられます。この記事をお読みいただいている方は、どちらのファイルも、リモートサーバー上での「ssh」接続をIPアドレスがブロックしていないことを既に確認されているはずです。

もしそうであれば、問題は依存関係、メモリの断片化、あるいは個々のクライアントからの過剰なセッション数に関連している可能性があります。幸いなことに、問題が解決すれば、エラーは再発しません。

方法1: 不足している依存関係を修正する

`OpenSSL` または `glibc` を更新した後にのみ `ssh_exchange_identification: connection closed by remote host` エラーが発生する場合は、依存関係の不足が原因である可能性があります。この場合、コマンドラインから ` sudo lsof -n | grep ssh | grep DEL`コマンドを実行してください。これにより、開いているファイルの一覧が表示されます。次に、最近削除されたファイルのうち、`ssh` サービス (デーモン) に関連するファイルを探してください。

結果が表示されない場合は、サービス(デーモン)またはシステム自体の再起動をお試しください。複数のエラーが発生した場合は再起動が必要になりますが、`/run/user/1000/gvfs` 関連のメッセージは仮想ファイルシステムとは無関係の問題によって発生しているため、無視しても問題ありません。

依存関係に問題があると思われる場合は、`apt-get`、`pacman`、または`yum`を使用してパッケージを更新することもできます。DebianまたはUbuntuベースのシステムを使用している場合は、`sudo apt-get -f upgrade`を実行して、発生した可能性のある破損したパッケージが修正されるかどうかを確認してください。

方法2: メモリの断片化を修正する

それでも問題が解決しない場合は、ホスト側に問題がある可能性があります。仮想マシン(VM)内で実行されているホストは必ずしもスワップパーティションを持っているとは限らず、メモリの断片化につながる可能性があります。他の手段(可能であれば物理的なアクセスも検討)でホストにアクセスし、問題が発生しているサービスを再起動してください。MySQL、Apache、nginxなどのサービスが原因となっている可能性があります。

ホストの再起動は必ずしも可能とは限りませんが、問題を解決できる場合があり、このエラーメッセージとIPアドレスを返す別のエラーメッセージが交互に表示される場合は、再起動を試してみるのも良いでしょう。サーバーへのアクセス権がある場合は、` vmstat -s`コマンドを実行することで、メモリの使用状況に関する有用な統計情報を取得できます。多くの場合、通常のユーザーとしてでも実行可能です。

3番目の方法: 追加のSSHコピーを確認する

これが原因ではない場合は、ホストがサーバーに接続しようとしているかどうかを確認してください。知らず知らずのうちにSSHセッションの最大数を超えている可能性があります。古いセッションを終了してから、再度接続を試みてください。簡単な方法は、` who`コマンドを実行して、どのユーザープロセスがログインしているかを確認することです。ログインしているユーザーは1人か2人だけであるはずです。複数のセッションが同時に実行されている場合は、ユーザープロセスを終了してから、再度ログインを試みてください。

これは、sshd がループ内で複数の異なる ssh セッションを開始するスクリプトの処理に追いつけない場合に発生する可能性があります。以前にこのような問題が発生したことがある場合は、ループに ` sleep 0.3`コマンドを追加して、sshd デーモンが処理に追いつく時間を与えてください。

方法4: sshd接続制限を見つける

このような接続の問題は、SSHを使用してルーターやその他の統合アダプターにアクセスしようとすると特によく発生します。これは、デフォルトの最大接続数が非常に少ないためです。サーバーに過負荷をかけたくない場合は、デフォルト設定を確認することをお勧めします。

走ってみる サーバーは、一定数の接続を処理できるように設定する必要があります。ほとんどの場合、デフォルトのシステム設定は同時接続数10に設定されており、大多数のユーザーがSSHを定期的に使用する必要があるほとんどのサーバーアーキテクチャではこれで十分です。

 

コメントは締め切りました。