SSH接続をデバッグする方法

How Debug Ssh Connections



このチュートリアルでは、SSHに接続できない場合、認証エラーなど、さまざまなSSH接続を診断するために使用できるいくつかの簡単な方法と手法について説明します。

ノート: 開始する前に、接続するデバイスがオンラインであり、エラーがデバイスが使用できないことが原因ではないことを確認してください。







問題1:SSHサービスが実行されていない

SSH接続エラーの一般的な原因は、サービスがリモートホストで実行されていないことです。これは、誤ってサービスがシャットダウンしたか、システムの再起動後にサービスが開始されなかったことが原因である可能性があります。



SSHサービスが実行されているかどうかを確認するには、次のコマンドを使用してシステムマネージャを使用します。



sudosystemctl status sshd

上記のコマンドは、以下のスクリーンショットに示すように、サービスが実行されているかどうかを報告する必要があります。







解決

サービスが実行されていないために発生するSSHの問題を解決するには、システムを使用してサービスを開始します。サービスがエラーで応答する場合は、ログを確認し、ログで報告された問題を修正してください。

以下のコマンドを使用して、サービスログを確認します。

グリップ 'sshd' /どこ/ログ/auth.log

systemdを使用してSSHサービスを開始または停止するには、以下のコマンドを使用します。

sudosystemctl start sshd

問題2:非標準ポートでのSSH

SSH接続をデバッグする際の2番目の一般的な問題は、非標準ポートの使用です。 SSHがデフォルトのポート22以外の別のポートで実行されている場合、SSHが実行されているポートを明示的に指定しない限り、リモートホストに接続しません。

SSHが実行されているポートを表示するには、次のようなnetstatなどのツールを使用します。

[数百@centos8〜]$sudo netstat -ptln | グリップ ssh
tcp0 00.0.0.0:560.0.0.0:*聞く1131/sshd
tcp60 0:::56:::*聞く1131/sshd

上記の出力は、SSHサービスが実行されているポートを示しています。この場合、それはポート56です。

解決

この問題を解決するには、netstatの情報を使用して、sshコマンドでポートを次のように明示的に指定します。

sshユーザー名@ip -NS 56

問題3:同じポートを使用する別のサービス

SSH接続エラーのもう1つの原因は、別のサービスまたはプロセスもSSHサービスと同じポートを使用している場合です。たとえば、SSHがポート80で実行するように明示的に指定されている場合(ひどい考え)、Apacheのようなサービスが同じポートを使用している可能性があります。

別のプロセスがSSHと同じポートを使用しているかどうかを確認するには、次のコマンドを使用してログを確認します。

sudojournalctl-NSsshd

このコマンドは、別のプロセスがSSHにバインドされたポートを使用しているかどうかを示す、以下に示すようなエラーを返す必要があります。

sshd[110611]:エラー:ポートにバインド800.0.0.0で失敗しました:アドレスはすでに使用する

ポートバインディングエラーがSELinuxなどのセキュリティ対策ではなく、別のサービスによって引き起こされていることを確認することをお勧めします。

解決

この問題を解決するために使用できるさまざまな方法があります。これらには以下が含まれます:

1つは、SSHサービスを別のポートにバインドすることです。これを行うには、SSH構成ファイルを編集します。たとえば、次のコマンドに示すように、ポートエントリをポート3009に変更します。

sudo ナノ /NS/ssh/sshd_config
3009

この問題を解決するために使用できるもう1つの方法は、SSHポートを使用してサービスを停止することです。たとえば、ポート80を次のように使用してApacheサービスを停止します。

sudosystemctl stop httpd
sudosystemctl disable httpd

問題4:ファイアウォール

上記のすべての方法を試してもSSH接続がない場合は、問題の次の考えられる原因であるファイアウォールの制限に進むことができます。使用しているファイアウォールの方法(UFWまたはIptables)に応じて、ファイアウォールがSSH接続を許可していることを確認する必要があります。

解決

ファイアウォールルールは幅広く、システム構成によって異なる場合があります。したがって、私はすべての側面をカバーすることはできません。ただし、以下は、SSHサービスがUFWファイアウォールで許可されていることを確認するための簡単なソリューションです。

sudoufw allow<ssh_port> /tcp

すべてのUFWルールをリセットして、最初からやり直すこともできます。これにより、ファイアウォール接続を最初からトラブルシューティングできます。

sudoufwリセット

問題5:パスワードログインの無効化

パスワードログインを受け入れず、公開鍵認証のみを使用するようにSSHを構成できる場合があります。サーバーで公開鍵が利用できない場合、または秘密鍵のペアが欠落している場合は、問題が発生する可能性があります。

パスワードログインが許可されているかどうかを確認するには、sshconfigを次のようにcatします。

[数百@centos8]$sudo グリップPasswordAuthentication/NS/ssh/sshd_config
#PasswordAuthenticationはい
PasswordAuthenticationはい
#PasswordAuthentication。 PAM構成に応じて、
#PAM認証、次にこれを有効にしますが、PasswordAuthenticationを設定します

上記の出力は、パスワードログインが許可されていることを示しています。

解決

上記の問題を解決するには、次の2つの方法を使用できます。

まず、値をnoに設定している場合は、PasswordAuthenticationの値をyesに変更して、sshサービスを再起動します。

もう1つの方法は、sshキーと値のペアを作成し、それを使用してサーバーにログインすることです。 sshキーと値のペアを作成する方法については、次のガイドを使用してください。

https://linuxhint.com/find-ssh-public-key/

https://linuxhint.com/use-ssh-copy-id-command/

結論

このクイックガイドでは、SSH接続エラーの主な原因とその解決方法について説明しました。このガイドでは一般的な問題について説明していますが、構成とアクセス許可に基づいて、システムに固有のエラーが見つかる場合があります。