Secure Shell
sshの問題のデバッグ
サーチ…
秘密鍵は受け入れられません(OpenSSHクライアントのデバッグ)
デフォルトでは、ほとんどの情報はユーザーから隠されています。 -vスイッチを使用して接続試行の冗長なログを取得することができます。これは通常、動作が予想外の理由を示すことによって問題を特定します。
ssh (またはsftpやscpような他のOpenSSHクライアント)を使用してexample.com接続していて、秘密鍵がサーバによって受け入れられておらず、サーバがパスワードを尋ねる(または接続を拒否した)
$ ssh example.com
[email protected]'s password:
-vvvスイッチでsshを実行して、すべてのデバッグメッセージを書き出します。それは多くの情報になりますが、しばらくしてから、それを理解するのはかなり簡単です:
$ ssh -vvv example.com
最も一般的な問題は、キーが予想された場所にないことです。同様の行が表示され、ファイルが見つからないと不平を言うのを期待することができます。あなたのファイルが本当に読み込まれたことを確認することは良いスタートです:
debug1: identity file /home/username/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/username/.ssh/id_dsa-cert type -1
私たちは認証部に進むことができます。サーバー構成に問題があるため、キーが提供される可能性がありますが、サーバーによって拒否されます。ログはこのように見えるかもしれません:
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: username@localhost
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
遠隔ホストの識別が変更されました!
sshを使用する一般的なエラーは次のようなエラーを表示することです
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:L5ri/Xdgpuals893ej1z5F1wlg1n2YNeBf/tsABX+QQ.
Please contact your system administrator.
Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/username/.ssh/known_hosts:12
RSA host key for *IP address* has changed and you have requested strict checking.
Host key verification failed.
これは以前は同じサーバーに接続し、別のホストキーを使用して識別されたことを意味します。サーバーのキーを変更したことがわかっている場合は、サーバーを再インストールするか、サーバー管理者が変更を発表しましたが、通常は古いキーを削除してsshに新しいキーを保存させてもsshません。
古い鍵は、 ssh-keygenを使って透過的に削除することができます:
ssh-keygen -R *IP address*
次の接続で新しい指紋を確認するよう求められます。
ssh192.168.0.128
The authenticity of host '192.168.0.128 (192.168.0.128)' can't be established.
ECDSA key fingerprint is SHA256:L5ri/Xdgpuals893ej1z5F1wlg1n2YNeBf/tsABX+QQ.
Are you sure you want to continue connecting (yes/no)?
上記のいずれかがわからない場合は、サーバー管理者に連絡してすべてが正常であることを確認してください。そうでない場合、潜在的な攻撃者は認証情報と転送されたすべてのデータを取得できます。
接続拒否
クライアントがリモートサーバーホストに接続要求を送信し、リモートホストが要求の受け入れを拒否したと応答すると、「接続が拒否されました」というエラーが発生します。 「接続が拒否されました」というエラーは、基本的に、コンピュータが要求されたIPアドレスとポートへの接続を受け入れていないことを意味します。
接続要求をブロックしているファイアウォールによって「Connection refused」が発生することがあります。特定のエンドポイントへの接続をブロックするように設定されたファイアウォールは、接続要求を破棄するように設定できます。この場合、クライアントは決して応答を得ず、最終的にタイムアウトします。または、ファイアウォールは、拒否応答で接続接続要求に応答できます。
ファイアウォールとは別に、SSHの場合、「接続が拒否されました」にはいくつかの原因が考えられます。
接続に間違ったポート番号を使用している可能性があります。 SSHの標準ポート番号は22ですが、権限のないアクセスを阻止するために別のポートでsshサービスを実行する人もいます。
間違ったコンピュータに接続しようとしている可能性があります。ホスト名またはIPアドレスを誤って入力した可能性があります。または、コンピュータが変更された動的に割り当てられたアドレスを使用している可能性があります。
sshサーバープロセスが実行されていない可能性があります。
- システムが起動中の場合、まだ起動されていない可能性があります。
- それは無効にされている可能性があります。システムがシングルユーザーモードの場合などです。
- 設定が誤っているため、起動に失敗する可能性があります。
- コンピュータにSSHサーバーが設定されていない可能性があります。 MS Windowsシステムには通常、SSHサーバーは含まれていません。一部のLinuxシステムでは、SSHサーバーはオプションのコンポーネントです。 OS XにはSSHサーバーが含まれていますが、デフォルトでは無効になっています。
SSHサーバープロセスは、接続しようとしている特定のIPインターフェイス上の接続をリッスンしていない可能性があります。ほとんどのコンピュータには、少なくとも2つのIPインタフェース「localhost」インタフェースと1つ以上のネットワークインタフェースがあります。各アクティブなインターフェイスには、関連付けられたIPアドレスが割り当てられます。 SSHサーバーは通常、どのIPインターフェイスでも接続を受け入れるように構成されています。ただし、特定のインターフェイスでのみ接続を受け入れるように設定できます。その場合、接続要求に正しいポートがあっても、SSHサーバーがリッスンしていないIPアドレスへの接続は拒否されます。
サーバーは、同じポートへの接続要求のバックログを持つ可能性があります。これはまれではありませんが、ホストが処理できるよりも速く接続要求を受信している場合、ホストは最終的に新しい接続要求の拒否を開始します。
ファイアウォールは別として、「接続が拒否されました」とは、リモートコンピュータと通信していることを意味します。接続要求を受け入れないだけです。
接続がタイムアウトしました
「接続タイムアウト」エラーは、リモートシステムがTCP / IP接続を開くクライアントの試行に応答しない場合に発生します。最も一般的な原因は次のとおりです。
- ファイアウォールが、使用しているポートの接続試行をブロックしています:
- ファイアウォールは、クライアント側で、アウトバウンド接続をブロックしたり、サーバー側で、インバウンド接続をブロックしたり、パス上の他の場所にある可能性があります。
- ルートの問題は 、間違ったポート番号を使用している可能性があります。
- 接続しようとしているホストがオフラインになっている可能性があります。
- クライアントとサーバー間のネットワークの一部が停止または中断する可能性があります。
- ネットワークルーティングの問題が発生する可能性があります。
接続タイムアウトの根本原因を診断することは困難です。
ssh_exchange_identification:read:ピアによる接続リセット
このエラーメッセージは、OpenSSH sshクライアントによって生成される可能性があります。これは、クライアントとサーバーの間のTCP接続が、受け入れられた直後にサーバーによって異常に閉じられたことを意味します。このメッセージの一般的な理由は次のとおりです。
- SSHサーバープロセスが誤動作しています。たとえば、クラッシュしました。
- クライアントとサーバー間のファイアウォール、ルーター、またはその他のネットワークデバイスがSSH接続を妨害しています。
エラーメッセージのフレーズは、具体的に何が起こったのかを示します。
ssh_exchange_identification: 1. SSHクライアントがSSHサーバーに接続した後、SSHプロトコルを開始する最初のステップは、サーバーがソフトウェアバージョンをクライアントに送信することです。 「ssh_exchange_identification」を含むエラーは、クライアントがサーバからソフトウェアバージョンを待っている間に、TCP接続を行った後にエラーが即座に発生したことを示します。
接続リセット:接続のリセットは、TCP接続が「異常に閉じた」ことを意味します。 TCP接続のクラッシュの1つを持つソフトウェアプロセスがクラッシュした場合、これを得ることができます。ネットワークファイアウォールは、TCP接続をブロックする手段として接続のリセットを使用するように設定できます。
by peerは、TCP接続が接続の「他端」から閉じられたことを意味します。この場合、「相手側」はリモートSSHサーバーです。
このエラーは、認証に失敗したことを示すものではありません。サーバーはTCP接続を受け付けた直後にTCP接続を閉じました。クライアントとサーバーはまだデータを交換していません。サーバーはまだホスト鍵をクライアントに送信しておらず、クライアントはまだサーバーで認証を試みていません。
ssh_exchange_identification:リモートホストによって閉じられた接続
このエラーメッセージは、OpenSSH sshクライアントによって生成される可能性があります。これは、クライアントとサーバーの間のTCP接続が、受け入れられた直後にサーバーによって閉じられたことを意味します。このメッセージは、通常、何らかの理由でSSHサーバがクライアントからの接続を受け付けないように設定されていることを示しています。
- サーバーは、クライアントのIPアドレスからの接続を拒否するように構成されている場合があります。
- サーバーには、アクティブなSSH接続の数に制限が設定されている場合があります。
- クライアントがSSHサーバーではないものに接続している可能性があります。
エラーメッセージのフレーズは、具体的に何が起こったのかを示します。
ssh_exchange_identification: 1. SSHクライアントがSSHサーバーに接続した後、SSHプロトコルを開始する最初のステップは、サーバーがソフトウェアバージョンをクライアントに送信することです。 「ssh_exchange_identification」を含むエラーは、クライアントがサーバからソフトウェアバージョンを待っている間に、TCP接続を行った直後にエラーが発生したことを示します。
Connection closed:これは、TCP接続が通常の方法で閉じられたことを意味します。これは、SSHサーバーが故意に接続を終了したことを示します。これは、「接続リセット」とは対照的です。これは、SSHサーバーがクラッシュしたか、または誤動作している可能性があります。
リモートホストによって 、TCP接続が接続の「他端」から閉じられたことを意味します。この場合、「相手側」はリモートSSHサーバーです。
このエラーは、認証に失敗したことを示すものではありません。サーバーはTCP接続を受け付けた直後にTCP接続を閉じました。クライアントとサーバーはまだデータを交換していません。サーバーはまだホスト鍵をクライアントに送信しておらず、クライアントはまだサーバーで認証を試みていません。