このトピックでは、Elastic Compute Service (ECS) の Linux インスタンスへのリモート接続が失敗する場合のトラブルシューティング方法を説明します。
緊急アクセス:Linux インスタンスでの緊急アクセスまたはメンテナンスには、まず VNC を使用して接続してください。 詳細については、「VNC を使用したインスタンスへの接続」をご参照ください。
原因
SSH リモート接続は、PAM セキュリティフレームワーク、セキュリティグループ、SSH 設定の問題など、いくつかの理由で失敗することがあります。 ご利用のインスタンスに当てはまる原因を特定し、対応するトラブルシューティング方法で問題を解決してください。
特定のエラーメッセージが表示されない場合
セルフサービス トラブルシューティング ツールの使用
Alibaba Cloud のセルフサービス トラブルシューティング ツールは、セキュリティグループの設定、インスタンスの内部ファイアウォール、および一般的なアプリケーションポートのリッスン状態を自動的にチェックします。 その後、このツールは明確な診断レポートを生成します。
診断 をクリックしてセルフサービス トラブルシューティングページを開き、対象のリージョンを選択します。
診断レポートには、検出された問題とその詳細が一覧表示されます。 たとえば、「セキュリティグループに共通ポートのインバウンドルールが設定されていません」といった内容が示されることがあります。 レポートには、各問題の方向、プロトコル (ICMPなど)、ポート、ポリシー (許可しない)、影響も詳細に記載されており、「セキュリティグループルールの変更」といった推奨される修正へのリンクが表示されます。
セルフサービス トラブルシューティング ツールで問題を特定できない場合は、次の手動トラブルシューティング手順に従ってください。
手動による問題のトラブルシューティング
リモート接続が失敗し、エラーメッセージが表示されない場合は、次の手順に従って手動で問題をトラブルシューティングしてください。
ステップ 1:ワークベンチでリモート接続をテストする
Alibaba Cloud が提供するツールであるワークベンチを使用して、リモート接続をテストしてください。 リモート接続中に問題が発生した場合、ワークベンチは特定のエラーメッセージと解決策を返します。 次の手順に従ってテストを実行してください。
ECS コンソール - インスタンスに移動します。
ページの左上隅で、リージョンとリソースグループを選択します。
対象のインスタンスの ID をクリックしてその詳細ページを開き、リモート接続をクリックします。
リモート接続 ダイアログボックスで ワークベンチ を探し、今すぐサインイン をクリックします。
インスタンスにリモートでログインできるかどうかをテストしてください。
ワークベンチは、対象インスタンスへのログインに必要な基本情報を自動的に入力します。 情報が正しいことを確認し、ユーザー名と認証情報を入力してから、ログインを試みてください。 ワークベンチを使用して Linux インスタンスにリモートでログインする手順については、「ワークベンチを使用して Linux インスタンスに接続する」をご参照ください。
ログインが引き続き失敗する場合、Workbench はエラーメッセージと解決策を返します。プロンプトに従って問題を解決し、Workbench を使用して再度接続を試みてください。一般的な Workbench の問題については、「インスタンスへの VNC 接続に関する問題」をご参照ください。
ワークベンチを使用してログインできる場合、対象インスタンスの 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」エラー