このトピックでは、Linux インスタンスへのリモート接続が失敗した場合のトラブルシューティング方法について説明します。
緊急アクセス: Linux インスタンスへの緊急アクセスやメンテナンスには、まず VNC を使用して接続します。 詳細については、「VNC を使用したインスタンスへの接続」をご参照ください。
原因
SSH リモート接続は、プラガブル認証モジュール (PAM) のセキュリティフレームワーク、セキュリティグループ、または SSH 設定に関する問題など、いくつかの理由で失敗することがあります。
特定のエラーメッセージが表示されない場合
セルフサービス トラブルシューティングツールの使用
Alibaba Cloud のセルフサービス トラブルシューティングツールは、セキュリティグループの設定、インスタンスの内部ファイアウォール、および一般的なアプリケーションポートのリスナーステータスを自動的にチェックします。 その後、明確な診断レポートを提供します。
をクリックしてセルフサービスのトラブルシューティングページに移動し、対象のリージョンに切り替えます。
診断レポートには、検出された問題とその詳細が一覧表示されます。 たとえば、「一般的なポートのインバウンドルールがセキュリティグループに設定されていません」といった内容が示されることがあります。 レポートには、各問題の方向、プロトコル (ICMP など) 、ポート、ポリシー (許可しない) 、影響も詳述されており、「セキュリティグループルールの変更」など、推奨される修正へのリンクが提供されます。
セルフサービス トラブルシューティングツールで問題を特定できない場合は、次の手動トラブルシューティング手順に従ってください。
手動での問題のトラブルシューティング
リモート接続に失敗し、エラーメッセージが表示されない場合は、次の手順に従って手動で問題をトラブルシューティングします。
ステップ 1:Workbench でのリモート接続のテスト
Alibaba Cloud が提供するツールである Workbench を使用して、リモート接続をテストします。 リモート接続中に問題が発生した場合、Workbench は特定のエラーメッセージと解決策を表示します。 次の手順に従ってテストを実行します。
ECS コンソール - インスタンスに移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
対象インスタンスの ID をクリックして詳細ページを開き、リモート接続 をクリックします。
リモート接続 ダイアログボックスで [ワークベンチ] を見つけ、今すぐサインイン をクリックします。
インスタンスにリモートでログインできるかどうかをテストします。
Workbench は、対象のインスタンスへのログインに必要な基本情報を自動的に入力します。 情報が正しいことを確認し、ユーザー名と認証情報を入力して、ログインを試みます。 Workbench を使用して Linux インスタンスにリモートでログインする方法については、「Workbench を使用して Linux インスタンスに接続する」をご参照ください。
ログインに失敗した場合、Workbench はエラーメッセージと解決策を表示します。 プロンプトに従って問題を解決し、再度 Workbench を使用して接続を試みます。 Workbench の一般的な問題については、「インスタンスへの VNC 接続に関する問題」をご参照ください。
Workbench を使用してログインできる場合、対象インスタンスの SSH サービスは正常に動作しています。 これにより、SSH サーバー側の問題は除外できます。 「ステップ 2:ネットワークの確認」に進みます。
ステップ 2:ネットワークの確認
Linux インスタンスにリモートで接続できない場合は、まずネットワークが正常に機能しているかどうかを確認します。
異なるネットワーク環境 (別のネットワークセグメントや別の ISP など) のコンピューターから接続をテストして、問題がローカルネットワークにあるのか、サーバー側にあるのかを判断します。
問題がローカルネットワークまたは ISP にある場合は、ローカルの IT スタッフまたは ISP に連絡して解決策を依頼してください。
ネットワークアダプターのドライバーに障害がある場合は、再インストールしてください。
ローカルクライアントで、ping コマンドを使用してインスタンスへのネットワーク接続をテストします。
ネットワークの異常を検出した場合は、パケットキャプチャを実行して分析します。 詳細については、「パケットキャプチャツールを使用してネットワークパケットをキャプチャする」をご参照ください。
ping リクエストがタイムアウトしたり、パケットが失われたりした場合は、
tracertやmtrなどのツールを使用してリンク分析を実行し、問題の原因を特定します。 詳細については、「MTR を使用したネットワークリンク分析」をご参照ください。システムカーネルで ping が無効になっていないにもかかわらず、ECS インスタンスへの ping テストが失敗する場合、サーバーの内部ファイアウォールがクライアントからのパケットを破棄している可能性があります。
詳細については、「ECS インスタンスのパブリック IP アドレスへの ping 失敗のトラブルシューティング」をご参照ください。
ステップ 3:ポートとセキュリティグループの確認
セキュリティグループの設定で、リモート接続ポートへのトラフィックが許可されているかどうかを確認します。
ECS コンソール - インスタンスに移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
[インスタンス] ページで、対象インスタンスの ID をクリックします。
[セキュリティグループ] タブでセキュリティグループを見つけ、[操作] 列の [ルールの管理] をクリックします。
[セキュリティグループの詳細] ページの [アクセスルール] セクションの [インバウンド] タブで、[ルールの追加] をクリックし、次のパラメーターでルールを追加します。
[アクション]: [許可]
[優先度]: 1 (値が小さいほど優先度が高くなります。1 が最も高い優先度です。)
[プロトコル]: [カスタム TCP]
[ソース]:ローカル IP アドレスに設定します。
https://cip.cc/にアクセスして IP アドレスを取得できます。[宛先]:[SSH(22)] を選択します。
次のコマンドを使用してポートをテストします。
telnet [$IP] [$Port]説明[$IP] は Linux インスタンスの IP アドレスです。
[$Port] は Linux インスタンスの SSH ポート番号です。
たとえば、
telnet 192.168.0.1 22コマンドを実行した場合、成功時のレスポンスは次のようになります。Trying 192.168.0.1 ... Connected to 192.168.0.1. Escape character is '^]'ポートテストに失敗した場合は、「ECS インスタンスに ping できる場合のポート障害のトラブルシューティング」をご参照ください。
ステップ 4:CPU 負荷、帯域幅、メモリの確認
リモート接続の失敗は、高い CPU 負荷、不十分なパブリック帯域幅、またはメモリ不足が原因である可能性があります。
CPU 負荷が高いかどうかを確認します。
CPU 負荷が高い場合
アプリケーションに集中的なディスクアクセス、ネットワークアクセス、または高い計算要件がある場合、高い CPU 負荷が予想されます。 このリソースのボトルネックを解決するには、インスタンスタイプをアップグレードします。 詳細については、「インスタンス設定変更の概要」をご参照ください。
説明高い CPU 負荷を解決する方法の詳細については、「Linux システムでの CPU 負荷のクエリと分析」をご参照ください。
説明ウイルス感染の確認: 通常のアプリケーションアクティビティを除外した後も CPU リソースが異常に高いままである場合、インスタンスが マイニングウイルス に感染している可能性があります。 マイニングマルウェアは CPU などのリソースを悪意を持って消費するため、インスタンスの遅延、応答の低下、深刻な場合には到達不能になることがあります。 トラブルシューティングと保護については、「マイニングウイルスの対処と予防ガイド」をご参照ください。 インスタンスが ランサムウェア に感染している場合、システムファイルが暗号化されてロックされ、ログインできなくなることもあります。 詳細については、「ランサムウェアに対するインスタンス保護の強化ガイド」をご参照ください。
CPU 負荷が高くない場合は、次のステップに進みます。
パブリック帯域幅が不足していないか確認します。
パブリック帯域幅が不足していると、リモート接続に失敗することがあります。 次の手順に従って帯域幅を確認します。
ECS コンソール - インスタンスに移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
インスタンスリストで、対応するインスタンスの ID をクリックします。 [設定情報]セクションで、[パブリック帯域幅]を確認します。
パブリック帯域幅が 0 Mbit/s の場合、インスタンスにはパブリック帯域幅が割り当てられていません。 これを修正するには、帯域幅をアップグレードします。 詳細については、「パブリック帯域幅のピーク値を変更する」をご参照ください。
メモリが不足していないか確認します。
Linux インスタンスにリモートで接続した後、デスクトップが表示されず、エラーメッセージなしで接続がすぐに閉じてしまうことがあります。 メモリ不足がこの問題の原因である可能性があります。 次の手順に従ってメモリ使用量を確認します。
VNC を使用して Linux インスタンスにログインします。
詳細については、「パスワード認証を使用して Linux インスタンスにログインする」をご参照ください。
メモリ使用量を確認します。 メモリが不足している場合は、インスタンスタイプをアップグレードしてリソースのボトルネックを解決することを推奨します。 詳細については、「インスタンス設定変更の概要」をご参照ください。
特定のエラーメッセージが表示される場合
リモート接続が失敗すると、通常、システムはエラーメッセージを表示します。 エラーメッセージを使用して原因を特定し、解決策を見つけます。
PAM セキュリティフレームワーク
Linux のプラガブル認証モジュール (PAM) セキュリティフレームワークは、セキュリティモジュールを読み込んで、インスタンスのアカウントへのアクセスとログインポリシーを制御できます。 PAM の設定が正しくないか、ポリシーがトリガーされると、SSH ログインが失敗することがあります。 一般的な例は次のとおりです:
Linux システム環境
ウイルス感染、アカウント設定の誤り、環境変数の問題など、Linux システム環境の問題も SSH ログインの失敗を引き起こす可能性があります。 一般的なケース:
SSH サービスとパラメーター設定
SSH サービスのデフォルト設定ファイルは /etc/ssh/sshd_config です。 このファイル内のパラメーター設定が正しくないか、特定の機能やポリシーが有効になっていると、SSH ログインが失敗することがあります。 一般的なケース:
SSH を使用して Linux インスタンスにログインする際の「Disconnected:No supported authentication methods available」エラー
SSH コマンドを使用して Linux インスタンスにログインする際の「User root not allowed because not listed in」エラー
root ユーザーを使用して SSH 経由で Linux インスタンスにログインする際の「Permission denied, please try again」エラー
SSH を使用してインスタンスにログインする際の「Too many authentication failures for root」エラー
Linux ECS インスタンスで SSH サービスを起動する際の「fatal: Cannot bind any address」エラー
SSH ディレクトリとファイルの設定
セキュリティ上の理由から、SSH サービスは実行時に関連するディレクトリとファイルの権限と所有権 (ユーザーとグループ) をチェックします。 権限が高すぎたり低すぎたりすると、サービス例外が発生し、クライアントのログイン失敗につながる可能性があります。 一般的なケース:
SSH キーの設定
SSH サービスは非対称暗号化を使用して送信データを暗号化します。 クライアントとサーバーはキー情報を交換および検証します。 一般的なケースは次のとおりです:
SSH を使用して ECS インスタンスにログインする際の「Host key verification failed」エラー