"Connection refused" の意味
"Connection refused" はネットワークレベルの拒否です。あなたのパケットはマシン(またはその手前のファイアウォール)に到達し、何かが能動的に「ここでは誰も待ち受けていない」と答えたのです。これは Permission denied(接続後の認証失敗)とも、タイムアウト(パケットが消えた ── たいてい IP が間違っているかネットワークが到達不能)とも異なります。Refused が意味するのは、マシンは正しいが、そのポートで応答している SSH サーバーがない、ということです。4 つの原因でほぼすべてのケースをカバーできます。
4 つの原因
| # | 原因 | 手早いチェック |
|---|---|---|
| 1 | SSH サーバーが動いていない | マシン上で systemctl status ssh |
| 2 | ポートが違う | SSH が 22 から移された?接続のポートを確認 |
| 3 | ファイアウォールが能動的に拒否 | ufw status / クラウドのセキュリティグループ |
| 4 | その IP に別のマシンがいる | IP が変わった(DHCP)?正しいマシン? |
1 ── sshd は本当に動いている?
サーバー上で(コンソール、Web VNC、その他どんな入り方でも):
sudo systemctl status ssh # Debian/Ubuntu(RHEL 上は sshd)
sudo systemctl enable --now ssh 新規インストールは定番です。Raspberry Pi OS や多くの最小イメージは、出荷時に SSH が無効になっています。一度有効にすれば持続します。Pi で SSH を有効にするを参照。
2 ── ポートは合っている?
管理者が SSH を 22 ポートから移した場合(よくあるノイズ削減策)、22 につなぐと拒否されます。接続プロファイルのポート欄を確認するか、別のマシンから探ってみましょう:nc -vz host 22 と nc -vz host 2222 の比較です。
3 ── ファイアウォールが拒否している
拒否(ドロップではなく)に設定されたファイアウォールは、まさにこのエラーを生みます。マシン上で:sudo ufw status ── あなたの SSH ポートは許可されていますか?クラウドサーバーではプロバイダーのダッシュボードにあるセキュリティグループ/ファイアウォールルールも確認してください。プロバイダーのレベルで 22 ポートが閉じられた VPS は、OS がパケットを見る前に拒否します。
4 ── そのアドレスに別のマシンがいる
家庭のネットワークは IP を再割り当てします(DHCP)。保存した接続が 192.168.1.42 を指しているのに、マシンが再起動して .57 になっていたら、22 ポートを拒否する別のデバイスにつないでいるかもしれません。ルーターのデバイス一覧を再確認するか ── あるいは Tailscale でこの種の問題をまるごと回避しましょう:LAN が何をしようと、各マシンは安定したプライベートアドレスを保ちます。TermAI には組み込まれています。Tailscale SSH のセットアップを参照。
Refused vs タイムアウト vs Permission denied
- Connection refused ── マシンは到達可能、誰も待ち受けていない(本記事)。
- Connection timed out ── パケットが消えた:IP が違う、マシンがオフ、またはネットワークの外からプライベートアドレスにつなごうとしている(Tailscale を使う)。
- Permission denied ── SSH は応答した、あなたの認証が失敗した:publickey ガイドを参照。
スマホからのデバッグ
このエラーがモバイルで厄介なのは、確認のために肝心のマシンに SSH できないことが多い点です。同じネットワークに到達可能な別のマシンがあれば、それを踏み台にしましょう:そこへ SSH し、拒否されているマシンを nc -vz / ping して、実際に何のポートが開いているか調べます。診断の呪文を思い出せなければ、状況を TermAI のアシスタントに伝えてください ──「192.168.1.42 の 22 ポートで何かが待ち受けているか確認して」── そしてつながっているマシンから提案されたコマンドを実行します。
FAQ
SSH connection refused は何が原因?
SSH サーバーが動いていない、SSH が別のポートにある、ファイアウォールがそのポートを拒否している、またはその IP に別のマシンがいる、のいずれかです。これは認証失敗ではなく、ネットワークレベルの拒否です。
connection timed out との違いは?
Refused = マシンが「ここには何もない」と答えた。Timed out = まったく応答がない(IP が違う、ホストがダウン、ネットワーク到達不能)。
Raspberry Pi で connection refused を直すには?
Raspberry Pi OS は既定で SSH が無効です ── raspi-config で有効にするか、boot パーティションに ssh ファイルを置けば、以後は持続します。
クイックファクト
- 意味:マシンは到達可能、そのポートで誰も待ち受けていない(ネットワークレベル、認証前)
- 原因:sshd 未起動 · ポート違い · ファイアウォール拒否 · ホスト違い/IP 変化
- チェック:マシン上で
systemctl status ssh;外部からnc -vz host port - IP ドリフトを避ける:LAN の DHCP IP の代わりに安定した Tailscale アドレス
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.