トラブルシューティング

SSH "Connection refused":原因と直し方

Connection refused は、マシンが応答したがそのポートで誰も待ち受けていないという意味です。4 つの原因 ── sshd 未起動、ポート違い、ファイアウォール拒否、ホスト違い ── タイムアウトや認証失敗との見分け方、そして直し方。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

"Connection refused" の意味

"Connection refused" はネットワークレベルの拒否です。あなたのパケットはマシン(またはその手前のファイアウォール)に到達し、何かが能動的に「ここでは誰も待ち受けていない」と答えたのです。これは Permission denied(接続後の認証失敗)とも、タイムアウト(パケットが消えた ── たいてい IP が間違っているかネットワークが到達不能)とも異なります。Refused が意味するのは、マシンは正しいが、そのポートで応答している SSH サーバーがない、ということです。4 つの原因でほぼすべてのケースをカバーできます。

4 つの原因

#原因手早いチェック
1SSH サーバーが動いていないマシン上で 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 22nc -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 のセットアップを参照。

スマホ上で安定した Tailscale アドレス経由の動作中の SSH セッション
安定したアドレスは'IP が変わって connection refused'のループを終わらせます:Tailscale 経由なら、あなたとマシンがどこにいてもマシンは同じプライベートアドレスを保ちます。

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 アドレス
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog