SSH接続時に「Connection refused」エラーが発生した場合の対処法
サーバーにSSH接続しようとした際に、以下のようなエラーメッセージが表示され、接続が拒否されることがあります。
ssh: connect to host example.server.com port 22: Connection refused
このエラーが発生する原因はいくつか考えられます。本記事では、一般的な原因とその対処法について解説します。
1. VPN接続を確認する
企業や特定のネットワーク内のサーバーに接続する場合、VPNを利用する必要があることがあります。VPNが切断されていると、サーバーに到達できないため、SSH接続が拒否されることがあります。
対処法:
2. サーバーが稼働しているか確認する
サーバー自体が停止している場合、SSH接続は当然ながら拒否されます。
対処法:
- サーバーの管理者に問い合わせて、サーバーが稼働しているか確認する
- もしサーバーへの別の接続手段(リモートデスクトップ、Web管理画面など)がある場合、それを試してみる
3. SSHサービスが起動しているか確認する
サーバーが起動していても、SSHサービス (sshd
) が動作していなければ、接続は拒否されます。
対処法:
- サーバーに物理的にアクセスできる場合、以下のコマンドを実行し、SSHサービスの状態を確認する
systemctl status sshd
- SSHサービスが停止している場合は、以下のコマンドで再起動する
sudo systemctl restart sshd
4. ファイアウォールやセキュリティグループを確認する
サーバーのファイアウォールやクラウドのセキュリティ設定によって、ポート22(SSH)がブロックされている可能性があります。
対処法:
iptables
またはfirewalld
の設定を確認するsudo iptables -L -n sudo firewall-cmd --list-all
- クラウドサーバーの場合、セキュリティグループ(AWS、GCP、Azureなど)の設定を確認し、ポート22が開放されているか確認する
5. SSHポートの変更を確認する
サーバー側でSSHのポートがデフォルトの 22
以外に変更されている場合、正しいポートを指定しないと接続できません。
対処法:
- サーバー管理者に確認し、使用すべきポートを教えてもらう
- 指定されたポートでSSH接続する(例: ポート
2222
を指定する場合)ssh -p 2222 user@example.server.com
6. 接続先のホスト名やIPアドレスが正しいか確認する
誤ったホスト名やIPアドレスを指定していると、接続できません。
対処法:
ping
コマンドでホストにアクセスできるか確認するping example.server.com
nslookup
やdig
を使用して、ホストのDNS解決が正しく機能しているか確認するnslookup example.server.com dig example.server.com
まとめ
SSH接続が拒否される場合、以下の手順で原因を特定し、対応してください。
- VPNが必要か確認し、接続する
- サーバー自体が稼働しているか確認する
- SSHサービス (
sshd
) が起動しているか確認する - ファイアウォールやセキュリティ設定を確認する
- SSHポートが変更されていないか確認し、必要なら指定する
- 接続先のホスト名やIPアドレスを再確認する
問題が解決しない場合は、サーバー管理者に問い合わせることをおすすめします。