テクノロジー · 実用ガイド

SSH の「kex_exchange_identification: Connection closed」は認証前の境界から調べる

通常のログイン失敗より前のエラーです。実際の経路とクライアントの停止点を固定し、同じ時刻の入口装置と sshd ログを照合して、切断した箇所だけを直します。

SSH の「kex_exchange_identification: Connection closed」は認証前の境界から調べる
オリジナルイラスト:サーバー識別行と最初の鍵交換メッセージを探します。SSH banner が無ければユーザー鍵より先に listener と入口経路を調べます。 Watch at Ease

kex_exchange_identification: Connection closed by remote host は秘密鍵の誤りを証明しません。TCP は相手に到達したものの、SSH 識別または初期鍵交換の付近で終了しており、通常のユーザー認証診断より前です。

クライアント、ネットワーク入口、SSH デーモンの三つの視点で時系列を作ります。同じ表示でも、誤ったポート、プロキシや FW、sshd の開始数制限、送信元ペナルティ、明示的拒否が原因になり得ます。

実効エンドポイントと一回の失敗時刻を固定

ホスト、解決アドレス、ポート、送信元、ProxyJump/ProxyCommand、VPN、呼出元を記録し、一回の UTC 時刻と完全な ssh -vvv を保存します。

名前が想定 sshd に届くとは限りません。LB、NAT、管理ポート、踏み台、古い DNS は TCP を受けても認証前に閉じられます。

クライアントが到達した最後の境界を特定

サーバー識別行と最初の鍵交換メッセージを探します。SSH banner が無ければユーザー鍵より先に listener と入口経路を調べます。

RFC 4253 は接続後に双方の識別文字列を要求します。ここでの切断は transport/認証前の観測で、authorized_keys 拒否の証拠ではありません。

入口の判断と sshd の認証前ログを照合

同じ時刻の FW、NAT、LB、proxy、host security と sshd journal を読み、どの backend が socket を受けたか確認します。

送信元に適用される Match を含む実効 sshd 値を読みます。無期限の全体 debug ではなく限定的な一時ログを使い、利用者情報を保護します。

制限や鍵を変える前に切断を分類

誤宛先、listener 不在、MaxStartups、送信元制限、penalty、RefuseConnection、LoginGraceTime、外部 policy を分けます。証拠で分岐を選びます。

掲示板に MaxStartups があるだけで増やしてはいけません。負荷だけ増やし、誤経路や攻撃、送信元 policy を直せないことがあります。

最小修正を一つ行い前進を確認

証明された route、proxy/backend、Match、許可された monitor 例外、または容量だけを直します。

既知の送信元から一回再試行し、正しい SSH 識別、同じ sshd 記録、意図した認証への到達を確認してから保護を全体解除せず実コマンドを一つ試します。

SSH の「kex_exchange_identification: Connection closed」は認証前の境界から調べる
オリジナルイラスト:同じ時刻の FW、NAT、LB、proxy、host security と sshd journal を読み、どの backend が socket を受けたか確認します。 Watch at Ease