SSH認証の不具合を解決するのは本当に面倒な作業です。特に、あの恐ろしい「接続を開けませんでした」というエラーが突然表示された時はなおさらです。ネットワークの一時的な不具合の場合もあれば、サーバーの設定ミスの場合もあります。いずれにせよ、このガイドでは、よくある(そしてあまり一般的ではない)解決策をいくつかご紹介しますので、何時間も頭を抱える必要はありません。通常、これらの手順をいくつか実行すれば、エラーは解消され、スムーズにリモートワークに戻ることができます。
SSHで「接続を開けませんでした」エラーを修正する方法
ネットワーク接続を確認してください
- これを最初の防衛線と考えてください。インターネット接続が不安定になっていないことを確認してください。ウェブサイトを閲覧したり、google.comのようなサーバーに ping を実行したりすることが役立ちます。ターミナルまたはコマンドプロンプトで以下を実行します。
ping 8.8.8.8またはping google.com。 - ping応答が遅い、またはタイムアウトする場合は、おそらくネットワークに問題があります。別のネットワークに切り替えるか、ルーターを再起動してください。もちろん、Windowsやルーターのファームウェアは、時として必要以上に面倒なことをするものです。
サーバー上でSSHサービスが実行されていることを確認してください。
- これにはサーバー自体へのアクセスが必要です。コントロールパネルなど、別の方法を使うと良いでしょう。Linuxの場合は、コマンド
systemctl status ssh(またはsshd)が役立ちます。SSHが有効かどうかを確認できます。 - 実行されていない場合は、起動する
sudo systemctl start sshか、不明な場合はサーバーを再起動してください。このサービスは時折、ランダムにクラッシュすることがあり、再起動することで解決することがあります。 - プロのヒント: OpenSSH を使用している Windows マシンの場合は、設定 > アプリ > オプション機能でインストールされている SSH サーバーを確認するか、PowerShell でサービスを再起動してください
Restart-Service sshd。
ホストアドレスを再確認してください
- ホスト名やIPアドレスにタイプミスがないことを確認してください。エラーを最小限に抑えるため、メモや以前のSSH接続からコピー&ペーストすることをお勧めします。ドットの間違いや数字の欠落など、ほんの些細なタイプミスでも、大きな混乱を招くことがあります。
- IPアドレスを扱う場合は、それがまだ有効であることを確認してください。サーバーによっては、特に動的IPアドレスプロバイダーを利用している場合、IPアドレスやホスト名が変更されることがあります。
正しいポートに接続していることを確認してください
- デフォルトのSSHポートは22ですが、セキュリティ上の調整のためにカスタムポートを使用する設定も多くあります。サーバーのSSH設定ファイル(例:)で
/etc/ssh/sshd_config該当の行を確認しPort 22、そのポートが使用されていることを確認してください。 ssh -p 2222 user@hostnameサーバーがポート22ではなくポート2222を使用している場合は、次のようにSSHコマンドを使用します。- ファイアウォールがこれらのポートをブロックしている場合があるため、クライアント側とサーバー側の両方のファイアウォールルールを確認してください。
ファイアウォールとセキュリティ設定を確認する
- ファイアウォールは過剰に保護的になる場合があります。お使いのコンピューターで、Windows Defenderファイアウォールまたはサードパーティ製のファイアウォールを確認し、ポート22(またはカスタムポート)が許可されているかどうかを確認してください。
- ufw がインストールされている Linux サーバーでは、
sudo ufw status次のコマンドを実行して開いているポートを確認します。SSH が表示されない場合は、次のコマンドで開きます。sudo ufw allow/tcp - さらに、AWSなどのクラウド環境において、セキュリティグループが接続をブロックしていないか確認してください。単純なルールが原因となっている場合もあります。
これらを終えれば、SSHクライアントはスムーズに接続できるはずです。もし接続できない場合は、認証情報や鍵に問題がある可能性がありますが、少なくともこれで多くの人がつまずく基本的な手順は網羅できたことになります。
SSH接続の問題解決のためのヒント
- 認証情報を再度確認してください。ユーザー名とパスワードが正しいことを確認し、余分なスペースや大文字小文字の区別に注意してください。
- SSHキーを使用する:SSHキーを設定すると、パスワードの問題を回避してセキュリティを強化できますが、それはまた別の話になります。
- SSHクライアントとサーバーをアップデートしてください。古いバージョンは互換性がなかったり、バグが発生したりする可能性があるため、常に最新の状態に保ってください。
- サーバーのログを確認してください。
/var/log/auth.logより詳細なエラーメッセージについては、関連するログファイルを確認してください。 - 既知の良好な接続の詳細を確認してください。可能であれば、以前の接続が成功した際に使用した、有効なIPアドレス/ホスト名とポート番号を使用してください。
よくある質問
「接続を開けませんでした」というエラーは、実際にはどういう意味ですか?
これは一般的に、SSHクライアントがサーバーに接続できないことを意味します。ネットワークの問題、アドレスの間違い、ポートのブロック、またはサーバーが正しくリッスンしていないなどが考えられます。
サーバー上でSSHが実行されていることを確認するにはどうすればよいですか?
他の方法でシェルにアクセスできる場合は、systemctl status sshまたはを実行してくださいservice ssh status。または、cPanelやPleskなどのコントロールパネルを使用している場合は、そこでSSHサービスを探してください。そうでない場合は、ホスティングプロバイダーにSSHが有効かどうかを確認してください。
特定のポートが必要ですか?
デフォルトはポート22ですが、セキュリティ上の理由から変更するユーザーも多くいます。サーバーの設定を確認し、SSHコマンドで正しいポート番号を指定してください。
ネットワーク接続のトラブルシューティング方法
google.comなどの外部サイトにpingを送信したり、コマンドを実行してtraceroute接続が切断される場所を確認したりしてください。
SSHキーを使用する理由とは?
パスワードよりも安全性が高く、不安定な場合も少ないため、特に自動化や日常的なアクセスには最適です。設定には多少の手間がかかりますが、それだけの価値はあります。
まとめ
- ネットワークの状態を確認し、いくつかのサーバーにpingを送信してみてください。
- SSHサービスが実行され、リッスン状態になっていることを確認してください。
- ホストのアドレスとポート番号を確認してください。
- 両端のファイアウォールルールを確認してください。
- 認証情報を再度確認し、可能であればSSHキーに切り替えてください。
まとめ
これらの修正のほとんどは一見明白ですが、タイプミスやファイアウォールルールなど、些細なことが見落とされがちなのは驚くべきことです。これらの問題を解決すれば、SSHは通常正常に動作します。これで、誰かが頭を悩ませる時間を少しでも節約できれば幸いです。ただし、サーバーの設定はそれぞれ少しずつ異なるため、ログや設定ファイルを詳しく調べることで、思わぬ原因が見つかる場合もあることを覚えておいてください。頑張ってください!