はじめに
SSH経由でリモートサーバーにアクセスする際に問題が発生していますか? SSHが「接続が拒否されました」というメッセージで応答する場合は、リクエストを変更するか、設定を確認する必要があります。
このチュートリアルでは、SSH接続拒否エラーの最も一般的な理由を説明します。
SSHを使用すると接続が拒否されるのはなぜですか?
「接続が拒否されました」が表示される理由はたくさんあります 「サーバーにSSHで接続しようとするとエラーが発生します。この問題を解決するには、まずシステムがSSH経由の接続を拒否した理由を特定する必要があります。
以下に、SSH接続拒否を引き起こす可能性のある最も一般的な理由のいくつかを示します。
SSHクライアントがインストールされていません
他の問題のトラブルシューティングを行う前に、最初のステップはSSHが正しくインストールされているかどうかを確認することです。サーバーにアクセスしているマシンには、SSHクライアントが設定されている必要があります。正しいクライアントが設定されていないと、サーバーにリモート接続できません。
システムにSSHクライアントがあるかどうかを確認するには、ターミナルウィンドウに次のように入力します。
ssh
端末がssh
のリストを提供する場合 コマンドオプションを使用すると、SSHクライアントがシステムにインストールされます。ただし、コマンドが見つかりませんで応答した場合 、OpenSSHクライアントをインストールする必要があります。
解決策:SSHクライアントをインストールします
マシンにSSHクライアントをインストールするには、ターミナルを開き、以下にリストされているコマンドの1つを実行します。
Ubuntu / Debianシステムの場合:
sudo apt install openssh-client
CentOS / RHELシステムの場合:
sudo yum install openssh-client
SSHデーモンがサーバーにインストールされていません
リモートサーバーにアクセスするためにSSHのクライアントバージョンが必要なのと同じように、接続をリッスンして受け入れるにはサーバーバージョンが必要です。したがって、SSHサーバーがないか、セットアップが無効な場合、サーバーは着信接続を拒否する可能性があります。
リモートサーバーでSSHが使用可能かどうかを確認するには、次のコマンドを実行します。
ssh localhost
出力が「接続が拒否されました」と応答した場合 "、サーバーへのSSHのインストールに進みます。
解決策:リモートサーバーにSSHをインストールする
SSHサーバーが見つからない問題を修正するには、OpenSSHサーバーのインストール方法を参照してください。
クレデンシャルが間違っています
SSH接続が拒否される一般的な理由は、タイプミスまたは誤ったクレデンシャルです。 ユーザー名のタイプを間違えていないことを確認してください またはパスワード 。
次に、正しいIPアドレスを使用しているかどうかを確認します サーバーの。
最後に、正しいSSHポートがあることを確認します 開いた。次のコマンドを実行して確認できます:
grep Port /etc/ssh/sshd_config
下の画像のように、出力にはポート番号が表示されます。
SSHサービスがダウンしています
SSHサービスを有効にして、バックグラウンドで実行する必要があります。サービスがダウンしている場合、SSHデーモンは接続を受け入れることができません。
サービスのステータスを確認するには、次のコマンドを入力します:
sudo service ssh status
出力は、サービスがアクティブであることを応答する必要があります。サービスがダウンしていると端末が応答した場合は、問題を解決できるようにします。
解決策:SSHサービスを有効にする
SSHデーモンがアクティブでないことがシステムに示されている場合は、次のコマンドを実行してサービスを開始できます。
systemctl start sshd
起動時にサービスを実行できるようにするには、次のコマンドを実行します。
sudo systemctl enable sshd
ファイアウォールがSSH接続を妨げています
SSHは、ファイアウォールの制限により接続を拒否できます。ファイアウォールは、潜在的に有害な接続からサーバーを保護します。ただし、システムにSSHを設定している場合は、SSH接続を許可するようにファイアウォールを構成する必要があります。
「接続が拒否されました」の原因となる可能性があるため、ファイアウォールがSSH接続をブロックしないようにしてください 「エラー。
解決策:ファイアウォールを介したSSH接続を許可する
上記の問題を修正するには、 ufwを使用できます (複雑でないファイアウォール)、ファイアウォール構成を管理するためのコマンドラインインターフェイスツール。
ターミナルウィンドウに次のコマンドを入力して、SSH接続を許可します。
sudo ufw allow ssh
SSHポートが閉じています
リモートサーバーへの接続を試みると、SSHは特定のポートに要求を送信します。このリクエストを受け入れるには、サーバーでSSHポートを開いている必要があります。
ポートが閉じている場合、サーバーは接続を拒否します。
デフォルトでは、SSHはポート22を使用します。ポートの構成を変更していない場合は、サーバーが着信要求をリッスンしているかどうかを確認できます。
リッスンしているすべてのポートを一覧表示するには、次のコマンドを実行します。
sudo lsof -i -n -P | grep LISTEN
出力でポート22を見つけ、その STATEかどうかを確認します LISTENに設定されています 。
または、特定のポート(この場合はポート22)が開いているかどうかを確認できます。
sudo lsof -i:22
解決策:SSHポートを開きます
ポート22がリクエストをリッスンできるようにするには、 iptables
を使用します コマンド:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
ファイアウォールの設定を変更することで、GUIからポートを開くこともできます。
SSHのデバッグとロギング
LinuxでSSHの問題を分析するには、詳細モードをオンにします。 またはデバッグ モード 。このモードを有効にすると、SSHは、接続、構成、および認証に関する問題のトラブルシューティングに役立つデバッグメッセージを出力します。
冗長性には3つのレベルがあります:
- レベル1(
-v
) - レベル2(
-vv
) - レベル3(
-vvv
)
したがって、構文 ssh [server_ip]
を使用してリモートサーバーにアクセスする代わりに -v
を追加します オプションと実行:
ssh -v [server_ip]
または、次を使用することもできます:
ssh -vv [server_ip]
または
ssh -vvv [server_ip]