Azure での Linux VM 接続問題に関する SSH の詳細なトラブルシューティングの手順
適用対象: ✔️ Linux VM
SSH クライアントは、さまざまな理由で VM 上の SSH サービスに到達できない可能性があります。 SSH のトラブルシューティングの一般的な手順に従った場合は、接続の問題について詳細なトラブルシューティングを行う必要があります。 この記事では、詳細なトラブルシューティング手順を説明し、SSH 接続に失敗した場所の特定とその解決方法を確認します。
準備作業を行う
次の図は、関係しているコンポーネントを示しています。
次の手順は、エラーの原因を分離し、解決策や回避策を見つけ出すのに役立ちます。
ポータルで VM の状態を確認します。 [Azure Portal] で [仮想マシン] > [VM 名] の順に選択します。
VM の状態ウィンドウには、" 実行中" と表示されます。 コンピューティング、ストレージ、およびネットワーク リソースの最近のアクティビティを確認するには、下にスクロールします。
エンドポイント、IP アドレス、ネットワーク セキュリティ グループなどの設定を確認するには、 [設定] を選択します。
VM には、 [エンドポイント] または [ネットワーク セキュリティ グループ] で確認できる SSH トラフィック用に定義されたエンドポイントが必要です。 Resource Manager を使用して作成された VM のエンドポイントは、ネットワーク セキュリティ グループに格納されています。 ネットワーク セキュリティ グループにルールが適用され、サブネットで参照されていることを確認します。
ネットワーク接続を確認するには、構成されているエンドポイントを確認します。また、HTTP などの別のプロトコルや他のサービスを使用して、VM に接続できるかどうかを確認します。
以上の手順を完了したら、SSH 接続を再試行してください。
問題のソースを見つける
お使いのコンピューター上の SSH クライアントは、以下の領域に問題または誤構成があるために Azure VM の SSH サービスに接続できないことがあります。
ソース 1: SSH クライアント コンピューター
エラーのソースであるコンピューターを排除するには、そのコンピューターから他のオンプレミスの Linux コンピューターに SSH 接続できることを確認します。
接続できない場合は、そのコンピューターで以下の問題を確認してください。
- 受信または送信の SSH トラフィック (TCP 22) をブロックしているローカル ファイアウォールの設定
- SSH 接続を妨げている、ローカルでインストールされたクライアント プロキシのソフトウェア
- SSH 接続を妨げている、ローカルでインストールされたネットワーク監視ソフトウェア
- トラフィックを監視する、あるいは特定種類のトラフィックを許可または禁止する別の種類のセキュリティ ソフトウェア
これらの条件のいずれかに該当する場合は、ソフトウェアを一時的に無効にし、オンプレミス コンピューターへの SSH 接続を試して、ご使用のコンピューターで接続がブロックされている理由を調べます。 次に、ネットワーク管理者とともに、SSH 接続が可能になるようにソフトウェアの設定を修正してください。
証明書認証を使用している場合は、ホーム ディレクトリの .ssh フォルダーに対してこれらのアクセス許可があることを確認します。
- Chmod 700 ~/.ssh
- Chmod 644 ~/.ssh/*.pub
- Chmod 600 ~/.ssh/id_rsa (またはプライベート キーが格納されている他のファイル)
- Chmod 644 ~/.ssh/known_hosts (SSH 経由で接続したホストが含まれます)
ソース 2: 組織のエッジ デバイス
エラーのソースである組織のエッジ デバイスを排除するには、インターネットに直接接続されているコンピューターから Azure VM に SSH 接続できることを確認します。 サイト間 VPN または Azure ExpressRoute 接続経由で VM にアクセスする場合は、「 Source 3: ネットワーク セキュリティ グループ」に進みます。
インターネットに直接接続されているコンピューターがない場合は、新しい Azure VM を独自のリソース グループまたはクラウド サービスに作成し、その新しい VM を使用します。 詳細については、「Azure 上で Linux を実行する仮想マシンの作成」を参照してください。 テストの完了後に、そのリソース グループまたは VM と、クラウド サービスを削除します。
インターネットに直接接続されているコンピューターとの SSH 接続を作成できる場合は、組織のエッジ デバイスで以下を確認してください。
- インターネットでの SSH トラフィックをブロックしている内部ファイアウォール
- SSH 接続を妨げているプロキシ サーバー
- SSH 接続を妨げている、エッジ ネットワーク内のデバイスで実行されている侵入検出またはネットワーク監視ソフトウェア
ネットワーク管理者と協力して、インターネットでの SSH トラフィックを許可するように組織のエッジ デバイスの設定を修正します。
ソース 3: ネットワーク セキュリティ グループ
ネットワーク セキュリティ グループでは、許可された受信トラフィックと送信トラフィックをより細かく制御できます。 Azure 仮想ネットワーク内のサブネットまたはクラウド サービスの全体に適用されるルールを作成することができます。 ネットワーク セキュリティ グループ ルールで、インターネットからの SSH トラフィックが許可されていることを確認します。 詳細については、「 ネットワーク セキュリティ グループについて」をご覧ください。
NSG 構成の検証に IP Verify を使用することもできます。 詳細については、「Azure のネットワーク監視の概要」を参照してください。
ソース 4: Linux ベースの Azure 仮想マシン
最後に考えられる問題のソースは、Azure 仮想マシン自体に関連するものです。
Linux ベースの仮想マシンのパスワードをリセットする手順をまだ実行していない場合は、仮想マシンでその手順に従います。
もう一度、コンピューターから接続を試みてください。 引き続き接続できない場合は、以下の問題が考えられます。
- SSH サービスがターゲット仮想マシンで実行されていない。
- SSH サービスが TCP ポート 22 をリッスンしていない。 テストするには、ローカル コンピューターに telnet クライアントをインストールし、"telnet cloudServiceName.cloudapp.net 22" を実行します。 この手順で、SSH エンドポイントに対する受信方向と送信方向の通信が仮想マシンで許可されているかどうかを確認できます。
- ターゲット仮想マシンのローカル ファイアウォールに、受信または送信の SSH トラフィックを妨げているルールがある。
- Azure 仮想マシンで実行されている侵入検出ソフトウェアまたはネットワーク監視ソフトウェアが、SSH 接続を妨げている。
その他のリソース
アプリケーションへのアクセスのトラブルシューティングに関する詳細については、「Azure 仮想マシンで動作するアプリケーションへのアクセスのトラブルシューティング」を参照してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。