SSH接続できないときの確認方法|Connection refused・Timeout・Permission deniedの原因を解説
SSHでサーバーに接続しようとしたのに、突然エラーが表示されてログインできないことがあります。
ただし、SSH接続の失敗にはいくつかのパターンがあります。
たとえば、
Connection refused
Connection timed out
Permission denied
Host key verification failed
などです。
エラーメッセージによって確認する場所が違うため、「SSHがつながらない」というだけで設定をすべて変更する必要はありません。
まずは表示されたエラーから原因を切り分けることが大切です。
ここではLinuxサーバーへのSSH接続を想定して、初心者でも確認しやすい順番に整理します。
まず確認したい5つのポイント
SSH接続できないときは、次の順番で確認すると原因を絞り込みやすくなります。
- サーバーのIPアドレスが正しいか
- SSHのポート番号が正しいか
- サーバーが起動しているか
- ファイアウォールでSSHが遮断されていないか
- ユーザー名や認証情報が正しいか
特に注意したいのがSSHのポート番号です。
SSHは一般的に22番ポートを使用しますが、セキュリティ対策などで別のポートに変更している場合があります。
その場合、
ssh user@example.com
のように接続すると、意図したポートにアクセスできないことがあります。
使用しているSSHポートが22番ではない場合は、-pでポート番号を指定します。
ssh -p 2222 user@example.com
※ 2222は説明用の例です。実際のポート番号はサーバーの設定を確認してください。
「Connection refused」と表示される場合
Connection refused
と表示された場合は、サーバー側に接続先が存在していても、指定したポートでSSH接続を受け付けていない可能性があります。
主な原因として、
- SSHサービスが停止している
- SSHのポート番号が違う
- SSHサービスが別のポートで待ち受けている
- ファイアウォールなどで通信が拒否されている
などが考えられます。
サーバーのコンソールなどから操作できる場合は、SSHサービスの状態を確認できます。
Ubuntuなどのsystemdを利用する環境では、次のようなコマンドが使えます。
sudo systemctl status ssh
環境によってサービス名が異なる場合があるため、sshで表示されない場合はサーバーのOSや設定を確認してください。
SSHサービスが停止している場合は、サーバー側から起動できることがあります。
sudo systemctl start ssh
ただし、サーバー環境によって設定やサービス名が異なるため、コマンドをそのまま実行するのではなく、現在の環境を確認してから操作してください。
「Connection timed out」の場合
次のような表示が出る場合があります。
Connection timed out
これは、SSH接続の要求を送っているものの、一定時間内に応答が返ってこない状態です。
この場合は、まずネットワークやファイアウォールを確認します。
代表的な原因は、
- IPアドレスが間違っている
- サーバーが停止している
- SSHポートが間違っている
- ファイアウォールで通信が遮断されている
- VPSやクラウド側のネットワーク設定で遮断されている
などです。
特にVPSやクラウドサーバーでは、OS内部のファイアウォールだけでなく、サービス側のファイアウォールやセキュリティ設定が通信を制限している場合があります。
そのため、サーバー内部だけを確認して終わりにしないことが重要です。
「Permission denied」の場合
次のようなエラーが表示される場合があります。
Permission denied
この場合は、ネットワークには到達しているものの、認証に失敗している可能性があります。
たとえば、
- ユーザー名が間違っている
- パスワードが間違っている
- 秘密鍵が正しく指定されていない
- 公開鍵がサーバー側に登録されていない
- SSHサーバーで許可されていない認証方式を使っている
などが考えられます。
秘密鍵を指定して接続する場合は、たとえば次のような形式になります。
ssh -i ~/.ssh/id_ed25519 user@example.com
鍵ファイルの場所は環境によって異なります。
また、秘密鍵そのものをサーバー管理者や第三者に送る必要はありません。
秘密鍵は自分の環境で安全に管理することが重要です。
「Host key verification failed」の場合
次のようなエラーが出ることもあります。
Host key verification failed.
これは、以前接続したことのあるサーバーのホストキーと、現在提示されているホストキーが一致しない場合などに発生します。
たとえば、
- サーバーを再構築した
- IPアドレスの先で別のサーバーになった
- SSHのホストキーが変更された
などのケースがあります。
このエラーが出たからといって、すぐに以前の情報を削除するのはおすすめできません。
本当に接続先のサーバーが変更されたのかを確認してから対応することが大切です。
身に覚えのないホストキー変更の場合は、セキュリティ上の問題がないか確認してください。
SSHポートが開いているか確認する
SSHの接続先ポートが正しいか分からない場合は、サーバー側の設定を確認します。
SSHサーバーの設定ファイルでは、環境によって次のような項目が使われています。
Port 22
ただし、実際の設定はサーバーによって異なります。
また、SSHサービスが指定したポートで待ち受けていても、ファイアウォール側でそのポートが許可されていなければ外部から接続できません。
つまり、
SSHサービスのポート設定
と
ファイアウォールの許可設定
の両方を確認する必要があります。
ファイアウォールが原因の場合
SSH接続できない原因として、ファイアウォールもよく確認したいポイントです。
たとえばUFWを利用している環境では、
sudo ufw status
で状態を確認できます。
SSHで使用するポートが許可されているかを確認してください。
ただし、SSHで遠隔操作している状態でファイアウォールの設定を変更すると、設定を間違えた場合に自分自身のSSH接続を遮断してしまう可能性があります。
そのため、ファイアウォールを変更するときは、現在使用しているSSHポートを確認してから操作することが重要です。
サーバーそのものが停止していないか確認する
設定をいくら確認しても接続できない場合は、サーバー自体が起動しているか確認します。
VPSやクラウドサービスを利用している場合は、管理画面からサーバーの状態を確認できることがあります。
また、
- サーバーを再起動した直後
- OSのアップデートを行った直後
- ネットワーク設定を変更した直後
- ファイアウォール設定を変更した直後
などは、設定変更の影響でSSH接続できなくなっていないか確認してください。
SSHだけが使えないのか、サーバーそのものが停止しているのかを切り分けることがポイントです。
SSH接続できないときの確認順序
原因が分からない場合は、次の順番で確認すると整理しやすくなります。
| 確認項目 | 確認する内容 |
|---|---|
| 1. サーバー | サーバーが起動しているか |
| 2. IPアドレス | 接続先が正しいか |
| 3. ポート | SSHのポート番号が正しいか |
| 4. ネットワーク | 接続元からサーバーへ到達できるか |
| 5. ファイアウォール | SSHポートが許可されているか |
| 6. SSHサービス | SSHサービスが起動しているか |
| 7. ユーザー | ユーザー名が正しいか |
| 8. 認証 | パスワードやSSH鍵に問題がないか |
| 9. ホストキー | 接続先のホストキーに問題がないか |
最初からすべての設定を変更するのではなく、エラーメッセージに合わせて確認範囲を狭めていくのがポイントです。
SSH接続の詳しい仕組みを知りたい場合
SSHそのものの仕組みがまだよく分からない場合は、先に基本を確認しておくと、エラーの原因も理解しやすくなります。
SSHは、ネットワーク経由で別のコンピューターやサーバーへ安全に接続して操作するための仕組みです。
接続時には、
SSHクライアント → ネットワーク → SSHサーバー
という流れで通信します。
そのため、接続できない場合も「パソコン側」「ネットワーク」「サーバー側」のどこで問題が起きているのかを切り分けて考えることができます。
SSHの基本的な仕組みについては、以下のような内容を押さえておくと分かりやすくなります。
- SSHクライアントとSSHサーバー
- SSHポート
- 公開鍵認証
- 秘密鍵
- SSHサービス
SSH接続できないときにやってはいけないこと
原因が分からないまま、設定を次々に変更するのは避けたほうが安全です。
特に注意したいのが、
- SSHポートを適当に変更する
- ファイアウォールをすべて無効にする
- SSH設定ファイルを確認せず編集する
- 秘密鍵を他人に送る
- ホストキーの警告を確認せず無視する
といった対応です。
サーバーの設定変更は、問題を解決するどころか新しい接続障害を発生させることがあります。
まず現在の設定を確認し、何が原因なのかを切り分けてから変更することをおすすめします。
まとめ
SSH接続できない場合は、いきなりSSHの設定を変更するのではなく、表示されたエラーを確認するところから始めます。
特に、
Connection refused→ SSHサービスやポートなどを確認Connection timed out→ ネットワークやファイアウォールなどを確認Permission denied→ ユーザーや認証方法を確認Host key verification failed→ 接続先やホストキーの変更を確認
というように、エラーごとに原因を切り分けると調査しやすくなります。
SSHはサーバー管理で非常に便利な仕組みですが、設定を変更すると遠隔から接続できなくなることもあります。
焦って設定を変更するのではなく、サーバー → IPアドレス → ポート → ネットワーク → ファイアウォール → SSHサービス → 認証の順番で確認していくと、原因を整理しやすくなります。
SSH接続できないとき、最初に何を確認すればいいですか?
まずは表示されたエラーメッセージと、接続先のIPアドレス、SSHポートを確認してください。その後、サーバーが起動しているか、ファイアウォールで通信が遮断されていないかを確認すると原因を絞り込みやすくなります。
SSHの22番ポートを開ければ必ず接続できますか?
いいえ。22番ポートが開いていても、サーバーが停止していたり、SSHサービスが起動していなかったり、ユーザー認証に失敗したりすると接続できません。
Connection timed outとConnection refusedの違いは何ですか?
どちらもSSH接続に失敗した状態ですが、原因が同じとは限りません。Connection timed outは通信への応答が返らない場合に発生し、Connection refusedは接続先でそのポートへの接続が受け付けられていない場合などに発生します。
SSHの接続設定を変更するときに注意することはありますか?
あります。特にSSHポートやファイアウォールを変更すると、設定を誤った場合に遠隔から接続できなくなる可能性があります。変更前の設定を確認し、可能であればサーバーのコンソールなど別のアクセス手段を確保しておくと安心です。
