"Connection closed by remote host" の意味
サーバーはあなたの接続を受け入れたうえで、意図的に切断しました。これが refused(何も待ち受けていない)や timed out(まったく応答がない)との決定的な違いです。ここでは何かが応答し、その後で切られています。Connection closed by remote host、Connection reset by peer、kex_exchange_identification: Connection closed by remote host といったバリエーションは、ほぼ常に次のいずれかを意味します。fail2ban にブロックされた、サーバーの sshd が再起動中/過負荷、または接続数の上限に達した、です。
原因、可能性の高い順
| # | 原因 | 手がかり |
|---|---|---|
| 1 | ログイン失敗後の fail2ban / IP ブロック | 昨日まで動いていたのに、失敗を何度かした今日は不通 |
| 2 | sshd が再起動中、または再起動直後 | サーバーが再起動中。1 分後には動く |
| 3 | 接続が多すぎる(MaxStartups) | 混雑したサーバー、負荷時に断続的 |
| 4 | hosts.deny / TCP wrappers / ファイアウォールのリセット | 特定の IP がサーバー側でブロックされている |
| 5 | そのポートで SSH 以外のサービスに当たっている | ポートが違う——別のものが応答して切断する |
1 — 最有力の原因:fail2ban にブロックされた
このエラーの前に鍵/パスワードの失敗が数回あったなら、fail2ban(またはクラウドプロバイダーの同等機能)があなたの IP をブロックした可能性が高いです。接続した瞬間にパケットを破棄するため、「closed by remote host」として現れます。まだ到達できる別のマシンから確認して解除しましょう:
sudo fail2ban-client status sshd # is your IP listed?
sudo fail2ban-client set sshd unbanip 1.2.3.4 スマホでは特によくあります。IP が変わる(Wi-Fi からモバイル回線へ)ことに加え、鍵の試行を 1、2 回間違えるだけでブロックが発動するのに十分です。根本の認証問題を直せば(Permission denied を参照)、再発を止められます。
2 — sshd の再起動、リブート、または過負荷
マシンが再起動中だったり、sshd が設定をリロード中だったりすると、その時間帯の接続は切断されます。1 分待ってから再試行してください。慢性的に混雑したサーバーでは、sshd の MaxStartups スロットル(デフォルト 10:30:100)が、処理中の未認証接続が多すぎると切断を始めます——負荷時に断続的な切断が見られます。サーバー側で値を上げると改善します:
# /etc/ssh/sshd_config
MaxStartups 30:50:100
# then: sudo systemctl reload ssh 3 — サーバー自身のログを見る
確かな答えはサーバー上にあります。アクセスできる手段(コンソール、別のセッション)から:
sudo journalctl -u ssh -n 50 # or: tail -n 50 /var/log/auth.log ブロックなのか、拒否されたユーザーなのか、hosts.deny なのか、設定エラーなのかをはっきり示してくれます——推測を一行の診断に変えてくれます。
スマホから復旧する
モバイルでのつらい点は、たった今あなたを切断したマシンを調べるために、その箱に SSH で入れないことが多いことです。そのネットワーク上に到達できる別のマシンがあれば、そこを経由して fail2ban-client / journalctl のチェックを実行しましょう。そして生のエラーを前に、5 つの原因のどれなのか分からないときは、それを選択してアシスタントに尋ねてください——TermAI の AI は実際のメッセージとあなたのコンテキストを読み、ブロック、スロットル、再起動のどれっぽいかを、確認用のコマンドとともに教えてくれます。
FAQ
"Connection closed by remote host" の原因は何ですか?
サーバーが受け入れた後に接続を切ったということで、最も多いのは fail2ban の IP ブロック、sshd の再起動/過負荷、接続数の上限(MaxStartups)、またはホストベースのブロックです。サーバーの認証ログを確認してください。
connection refused とどう違いますか?
Refused = 何も待ち受けていない。Closed by remote host = 何かが応答し、その後で意図的に切られた、です。
何度もブロックされます——なぜ?
認証の繰り返し失敗(多くは誤った鍵、または提示されない鍵)が fail2ban を発動させます。認証問題そのものを直し、固定アドレスがあればホワイトリストに入れてください。
kex_exchange_identification: Connection closed とは何ですか?
同じ仲間です——サーバーが最初のハンドシェイク中に接続を切ったもので、通常はブロック、スロットル、またはそのポートで SSH 以外のサービスに当たっていることが原因です。
クイックファクト
- 意味:サーバーが受け入れた後に意図的に接続を切った(refused でも timed out でもない)
- 最有力の原因:ログイン失敗後の fail2ban / IP ブロック——
fail2ban-client status sshd - その他:sshd の再起動、負荷時の
MaxStartupsスロットル、hosts.deny、ポート間違い - 診断:サーバー上の
journalctl -u ssh//var/log/auth.logが原因を明示する - モバイルのヒント:IP の変化 + 鍵の試行を 1、2 回間違えると簡単にブロックが発動——認証の根本原因を直す
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.