既存のホスト debian Bullseye への SSH 接続が拒否されました。

既存のホスト debian Bullseye への SSH 接続が拒否されました。

以前にsshを介してサーバーに接続されたクライアントが切断され、後で再接続しようとすると、「ポート22接続が拒否されました」というエラーメッセージを受信する奇妙なバグがあります。再接続するには、クライアントコンピュータを再起動する必要があります。以前に SSH サーバーに接続していなかったクライアントは、いつでも接続できます。

なぜこれが起こるのかというアイデアはありますか? service sshd status問題は表示されず、auth.log試行も記録されません。ファイアウォールも無効になっています。

Windows 10の一般的な接続:

OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug3: Failed to open file:C:/Users/baric/.ssh/config error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolve_canonicalize: hostname 192.168.1.101 is address
debug2: ssh_connect_direct
debug1: Connecting to 192.168.1.101 [192.168.1.101] port 22.
debug3: finish_connect - ERROR: async io completed with error: 10061, io:000002E37B8A09C0
debug1: connect to address 192.168.1.101 port 22: Connection refused
ssh: connect to host 192.168.1.101 port 22: Connection refused

答え1

この動作の1つの可能な説明は、SSHサーバーが同じIPアドレスの同時接続数を制限するように構成されていることです。クライアントが初めてサーバーに接続すると、新しい接続が確立され、サーバーの接続テーブルに登録されます。ただし、クライアントの接続が失われると、サーバー側の接続はすぐに終了せず、timed-wait短時間の間開いたままになる可能性があります。この間、サーバーは依然としてクライアントが接続されていると考えて、同じIPアドレスからの新しい接続を許可しない可能性があります。

Connection refusedクライアントがこの間接続を試みると、サーバーはまだ古い接続が完全に終了するのを待っているため、エラーメッセージを受け取ります。

この状況であることを確認するには、SSHサーバーが許可する同時接続の最大数を増やして問題が解決しないことを確認します。接続タイムアウト値を調整して、役に立つことを確認することもできます。

# find these two lines in /etc/ssh/sshd_config and try to reduce their values to see if it helps

ClientAliveInterval
ClientAliveCountMax

sudo systemctl reload ssh # (might be ssh on your server

関連情報