【2026年最新】UbuntuにSSH接続できない!「Connection refused」から「Permission denied」まで完全解決ガイド

「黒い画面」への入り口が閉ざされた時、エンジニアは無力になる。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
サーバー管理や開発において、SSH (Secure Shell) は命綱です。
これがないと、サーバーを遠隔操作することも、ファイルを転送することもできません。

しかし、昨日まで繋がっていたのに急に繋がらなくなる、あるいはセットアップしたばかりなのにうんともすんとも言わない……。
画面に表示されるのは、冷酷なエラーメッセージだけ。

ssh: connect to host 192.168.1.10 port 22: Connection refused
Permission denied (publickey).
Operation timed out.

この画面を見て、途方に暮れていませんか?

コウ君

先生、またトラブルです!
UbuntuでWebサーバーを作ろうと思って、自分の部屋にあるPCにSSHしようとしたんです。
でも、「Connection refused」って出て、門前払いされちゃいました。
IPアドレスは合ってるはずなんですけど……。
あと、鍵認証?とかいうのも難しそうで、何が原因なのかサッパリです!

リナックス先生

コウ君、SSHのトラブルは「エラーメッセージ」が全てを語っているわ。
「Refused(拒否)」なら相手はいるけどサービスが動いていないかポートが閉じている。
「Timed out(タイムアウト)」なら相手が見つからないか途中で捨てられている。
「Denied(不可)」なら鍵やパスワードが間違っている。
原因の切り分けさえできれば、SSHは怖くないわ。一つずつ紐解いていきましょう!

本記事では、Ubuntu 24.04 LTS / 26.04 LTS を対象に、SSH接続ができない原因をエラーメッセージ別に分類し、初心者でも確実に解決できる手順をチャート形式で解説します。

🔧 本記事の対象環境

  • サーバー側: Ubuntu 24.04 LTS / 26.04 LTS (OpenSSH Server)
  • クライアント側: Windows 10/11 (PowerShell / WSL2), Mac (Terminal)
  • ネットワーク: 家庭内LAN / 社内LAN (IPv4)

第1章:エラーメッセージ別・診断チャート

SSHのトラブル解決の第一歩は、クライアント(手元のPC)に表示されるエラーメッセージを正確に読み取ることです。
「繋がらない」と一言で言っても、その理由は千差万別です。

エラーメッセージ 意味 疑うべき原因
Connection refused 接続拒否 ・SSHサーバーが動いていない
・ポート番号が違う
・UFWで明示的にRejectされている
Operation timed out 応答なし ・IPアドレスが間違っている
・PCの電源が入っていない
・ファイアウォールでDropされている
Permission denied 権限なし ・パスワード間違い
・ユーザー名間違い
・鍵の設定ミス
・rootログイン禁止設定
Host key verification failed 指紋不一致 ・OSを再インストールした
・IPアドレスが他のマシンと入れ替わった
・中間者攻撃の可能性

まずは、ターミナルで ssh -v user@ipaddress と入力し、詳細なデバッグモードで実行してみることをお勧めします。
どの段階で止まっているかが一目瞭然になります。


第2章:【基本】SSHサーバーは入っているか?起動しているか?

Ubuntu Desktop(デスクトップ版)は、初期状態ではSSHサーバーが入っていません。
クライアント機能(sshコマンド)はありますが、サーバー機能(sshd)がないため、外部からの接続を受け付けられません。

1. OpenSSH Serverのインストール

Ubuntuの実機(またはコンソール)でターミナルを開き、以下のコマンドを実行します。

sudo apt update
sudo apt install openssh-server

2. サービスの起動確認

インストールしたら、動いているか確認します。

sudo systemctl status ssh

緑色で Active: active (running) と表示されていればOKです。
もし inactivedead になっている場合は、起動させます。

sudo systemctl start ssh
sudo systemctl enable ssh  # 次回起動時も自動実行

3. 設定ファイルの確認

設定ファイル /etc/ssh/sshd_config に記述ミスがあると、サービスが起動しません。
以下のコマンドで設定ファイルの文法チェックを行えます。

sudo sshd -t

何も表示されなければ正常です。エラーが表示された場合は、その行を修正してください。


第3章:【Connection refused】ポートとサービスの確認

エラー:Connection refused
これは「玄関までは行ったけど、ドアが開かない(誰も応答しない)」状態です。

1. ポート番号の確認

「セキュリティのためにポートを22番から変えた気がする……」という場合、設定ファイルを確認します。

sudo grep Port /etc/ssh/sshd_config

何も出なければ標準の22番です。
Port 2222 などと出た場合は、接続時に ssh -p 2222 user@ip とポートを指定する必要があります。

2. リッスンアドレスの確認

サーバーが正しいネットワークインターフェースで待ち受けているか確認します。

sudo ss -tuln | grep 22

以下のように表示されれば正常です。

  • tcp LISTEN 0 128 0.0.0.0:22 (IPv4ですべてのIPから受付)
  • tcp LISTEN 0 128 [::]:22 (IPv6ですべてのIPから受付)

もし 127.0.0.1:22 となっている場合、自分自身(ローカルホスト)からしか接続できません。
sshd_configListenAddress 設定を見直してください。


第4章:【Time out】IPアドレスとファイアウォールの壁

エラー:Operation timed out / No route to host
いつまで経っても反応がなく、忘れた頃にエラーが出る場合、ネットワークの経路かファイアウォールに問題があります。

1. IPアドレスの再確認

「昨日まで繋がっていたのに」というパターンの筆頭原因は、DHCPによるIPアドレスの変更です。
Ubuntu側でIPアドレスを確認してください。

ip a

192.168.1.X などのアドレスが変わっていませんか?
サーバーとして使うなら、ルーターの設定でIPを固定するか、Ubuntu側で固定IP(Static IP)を設定することを強く推奨します。

2. ファイアウォール (UFW) の設定

Ubuntu標準のファイアウォール UFW (Uncomplicated Firewall) が、SSHのポート(22番)を塞いでいる可能性があります。

sudo ufw status

Status: active となっていて、かつ 22/tcpOpenSSH の許可(ALLOW)がない場合、接続は遮断されます。

解決策:

sudo ufw allow ssh
sudo ufw reload

これでポート22が開放されます。
もしポート番号を変更している場合は sudo ufw allow 2222/tcp のように数値を指定してください。

💡 プロの豆知識:pingは通る?
接続確認に ping 192.168.1.10 を打ってみましょう。
Pingが返ってくるのにSSHが繋がらないなら、ポートかサービスの問題。
Pingすら返ってこないなら、IPアドレス間違いか、PCの電源が落ちているか、Wi-Fiが切れています。


第5章:【Permission denied】パスワード認証とrootログインの罠

エラー:Permission denied, please try again.
サーバーには到達できているが、認証で弾かれている状態です。

1. 単純な入力ミス

  • Caps Lockがかかっていませんか?
  • ユーザー名は合っていますか?(Ubuntuの初期ユーザー名はインストール時に決めたものです)
  • パスワードはUbuntuのログインパスワードと同じです。

2. rootでのログイン禁止

「管理者なんだから ssh root@... で入りたい」と思うかもしれませんが、Ubuntuのデフォルト設定では rootユーザーでの直接SSHログインは禁止 されています(セキュリティのため)。

解決策:
一般ユーザー(インストール時に作成したユーザー)でログインし、入ってから sudo -i でrootになってください。
どうしてもrootで入りたい場合は sshd_configPermitRootLoginyes に変更する必要がありますが、推奨されません。

3. パスワード認証 無効化の罠

VPSやクラウドインスタンスの場合、最初から「パスワード認証禁止(鍵認証のみ)」の設定になっていることがあります。
設定ファイルを確認します。

sudo nano /etc/ssh/sshd_config

以下の行を探してください。

PasswordAuthentication no

これが no になっていると、パスワードでは一生入れません。
一時的にパスワードで入りたいなら yes に書き換えて、sudo systemctl restart ssh で再起動します。
(※セキュリティ上は鍵認証を設定して no にするのが正解です)


第6章:【公開鍵認証】「600」と「700」の掟。パーミッション地獄

エラー:Permission denied (publickey).

「パスワードは面倒だし危険だから、公開鍵認証にしよう!」と意気込んで設定したものの、エラーで弾かれる。
この原因の99%は、ファイルやディレクトリの「パーミッション(権限)」設定ミスです。

SSHはセキュリティに非常に厳格で、「自分以外の誰かが書き込める状態の鍵ファイル」を一切信用しません。

正しいパーミッション設定(Ubuntu側)

ログインしたいユーザーのホームディレクトリで、以下の状態になっている必要があります。

対象 パス 推奨パーミッション 意味
ホーム ~/ (/home/user) 755 (drwxr-xr-x) 自分以外は書き込めない
設定フォルダ ~/.ssh 700 (drwx——) 自分以外は何もできない
公開鍵リスト ~/.ssh/authorized_keys 600 (-rw——-) 自分以外は読み書きできない

修正コマンド

SSH接続できない場合は、一旦コンソール(実機)で操作するか、パスワード認証で入ってから修正します。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

また、所有者が自分になっているかも確認しましょう。

chown -R kou:kou ~/.ssh

(※ kou は自分のユーザー名に変えてください)


第7章:【2026年の常識】RSAはもう古い?鍵の種類の問題

「昔作った鍵を使おうとしたら繋がらない」「ssh-rsa は安全ではないと言われる」。
2026年現在、OpenSSHのセキュリティ基準は上がっており、古い暗号化方式の鍵はデフォルトで無効化されています。

使ってはいけない鍵、使うべき鍵

  • × DSA (ssh-dss): 完全に廃止されました。使えません。
  • △ RSA (ssh-rsa): 鍵長が短い(1024bit)ものは拒否されます。2048bit以上でも、SHA-1ハッシュを使う古い署名方式はデフォルトで無効です。
  • ◎ ED25519 (ssh-ed25519): 現在の推奨です。 短くて高速で安全です。

解決策:ED25519で鍵を作り直す

古い鍵トラブルで悩むより、新しい最強の鍵を作り直すのが早道です。
クライアント側(Windows/Mac)で以下を実行します。

ssh-keygen -t ed25519 -C "my_ubuntu_key"

出来上がった公開鍵(id_ed25519.pub)の中身を、Ubuntu側の ~/.ssh/authorized_keys に追記してください。


第8章:【番外編】ログ解析とFail2Banによるアクセス制限

最後に、トラブルの原因を根本から特定するためのログ解析方法と、不正アクセスを防ぐための対策を紹介します。

認証ログのリアルタイム監視

SSHの接続試行は /var/log/auth.log に記録されます。
以下のコマンドを実行しながら、別の端末からSSH接続を試みると、リアルタイムでエラー原因が表示されます。

sudo tail -f /var/log/auth.log

よくあるログメッセージ:

  • Failed password for ... : パスワード間違い
  • Authentication refused: bad ownership or modes for directory ... : パーミッション設定ミス(第6章参照)
  • User root from ... not allowed because none of user's groups are listed in AllowGroups : アクセス制限に引っかかっている

Fail2Banの導入(推奨)

SSHポートを開放していると、世界中から総当たり攻撃(ブルートフォースアタック)が飛んできます。
何度もログインに失敗したIPアドレスを自動でBANするツール Fail2Ban を導入しましょう。

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

これだけで、初期設定(SSHDの保護)が有効になります。
「自分でパスワードを間違えすぎてBANされた」という場合は、sudo fail2ban-client set sshd unbanip [自分のIP] で解除できます。


まとめ:エラーログは嘘をつかない

お疲れ様でした。
SSH接続トラブルの解決マップをまとめます。

  1. Connection refused: サーバー未起動、ポート違い、UFW拒否。
  2. Timed out: IP間違い、電源OFF、経路のファイアウォール。
  3. Permission denied: パスワード間違い、authorized_keys のパーミッション(600)違反。
  4. 鍵が通らない: 古いRSA鍵を使っている(ED25519へ移行せよ)。
リナックス先生

SSHが繋がらない時は、焦らず「-v」オプション(ssh -v user@host)を付けて実行してみて。
どこで止まっているかが詳細に表示されるから、それが解決の糸口になるわ。
SSHを制するものは、Linuxサーバーを制す! 頑張ってね!

コメント