SSH トラブルシューティングを 1 つの表で
ほぼすべての SSH の失敗は 3 つのバケツのいずれかに当てはまります — 接続が確立しない、認証が拒否される、セッションが切れる。最速の解決法は、正確なエラーを読んでその原因に飛ぶことです。このページは、よくあるすべての SSH エラー、その意味、そしてそれを直すための的を絞ったガイドの地図です。
症状から診断する
| 表示されるエラー | たいていの意味 | 解決法 |
|---|---|---|
Connection refused | マシンには届くが、そのポートで何もリッスンしていない | Connection refused → |
Connection timed out | まったく応答なし — IP が違う、ホストがダウン、または外部からプライベートアドレスへ | Timed out → |
Connection closed by remote host | サーバーが受け入れてから切断 — 多くは fail2ban のバン | Closed by remote → |
Permission denied (publickey) | サーバーが認証を拒否 — 鍵/ユーザー名/権限 | Permission denied → |
Too many authentication failures | クライアントが鍵を出しすぎて、正しい鍵が試される前に上限に達した | Too many auth → |
UNPROTECTED PRIVATE KEY FILE | 鍵ファイルが他者から読める — SSH がそれを無視する | Unprotected key → |
Host key verification failed | サーバーの識別鍵が前回から変わった | Host key changed → |
no matching host key type found | 新しいクライアント vs 古いサーバー — アルゴリズムの不一致 | No matching host key → |
Broken pipe / client_loop | アイドル接続が切られた、またはネットワークが変わった | Broken pipe → |
接続レベルのエラー(つながらない)
これらは認証の前に起こります — 問題は資格情報ではなくネットワーク経路です。3 つは簡単に見分けられます:
- Connection refused — マシンが「ここでは何もリッスンしていない」と答えた。sshd が停止、ポートが違う、またはファイアウォールが拒否。
- Connection timed out — まったく応答なし。IP が違う/変わった、ホストがスリープ中、または外部からプライベート LAN アドレスへ接続しようとしている(モバイルでの最大の原因)。
- Connection closed by remote host — 受け入れてから切断した。たいていはログイン失敗後の fail2ban のバン、または過負荷の sshd。
認証エラー(つながるが拒否される)
接続は機能している。サーバーがあなたの資格情報を受け入れない。
- Permission denied (publickey) — 万能のエラー:ユーザー名が違う、鍵が出されていない、鍵が
authorized_keysにない、または権限が不正。 - Too many authentication failures — クライアントに鍵が多く、正しい鍵の前にサーバーの上限を使い切る。
IdentitiesOnlyで解決。 - UNPROTECTED PRIVATE KEY FILE — 秘密鍵が誰でも読める状態なので、SSH がそれを無視する。
chmod 600を 1 回。
ホスト鍵とアルゴリズムのエラー
- Host key verification failed — サーバーの識別鍵が、あなたが固定したものと異なる。たいていは再インストールまたは IP の再利用。受け入れる前に確認を。
- no matching host key type found — 新しいクライアントが古いサーバーの古いアルゴリズム(
ssh-rsa)を拒否した。ホストごとに互換オプションを限定して指定。
セッションとその他のエラー
- Broken pipe / client_loop: send disconnect — 接続が死んだ。たいていは NAT によるアイドル切断またはネットワーク変化。キープアライブで直る。
- Docker コンテナに「SSH」できない? — そうはしません。ホストに SSH してから
docker exec。
スマホからトラブルシューティング
モバイルでの SSH エラーの難しいところは、冗長な出力を読み、診断コマンドを覚えておくことです。使えるセッションが 1 つでもあれば、エラーを選択してアシスタントに尋ねてください — TermAI の AI が実際のメッセージとあなたのサーバーのコンテキストを読み、どの原因かを、確認して直すための正確なコマンドとともに教えてくれます。
FAQ
SSH 接続をどうトラブルシューティングしますか?
正確なエラーを読んで分類します:接続レベル(refused/timed-out/closed)はネットワークまたはサーバーの問題、認証レベル(permission denied/too many auth)は資格情報、ホスト鍵エラーは識別またはアルゴリズムの不一致です。その後、そのエラーに的を絞った解決法に従ってください。
refused、timed out、closed の違いは?
Refused = 何もリッスンしていない。Timed out = まったく応答なし。Closed by remote host = 応答してからあなたを切断した(多くはバン)。
なぜ SSH は自宅では使えてモバイルデータでは使えない?
自宅ネットワークの外には存在しないプライベート LAN アドレスに接続している可能性が高いです — 安定したアドレスには Tailscale を使ってください。timed out を参照。
SSH エラーはサーバーのどこに記録されますか?/var/log/auth.log(Debian/Ubuntu)または journalctl -u ssh — ほとんどの認証および接続拒否の本当の理由が記されています。
クイックファクト
- 3 つのバケツ:接続レベル(refused/timed-out/closed)、認証レベル(permission denied/too many auth/unprotected key)、ホスト鍵/アルゴリズム
- 接続エラーの見分け方:refused = 何もリッスンしていない · timed out = 応答なし · closed = 応答してから切断
- サーバー側の真実:
/var/log/auth.logまたはjournalctl -u ssh - モバイル:エラーを選択し、AI に分類して直してもらう
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.