Azure Linux VM に対する SSH 接続の失敗、エラー、拒否のトラブルシューティング

この記事は、Linux 仮想マシン (VM) に接続しようとしたときに、Secure Shell (SSH) エラー、SSH 接続エラー、または SSH の拒否により発生する問題を見つけて修正するために役立ちます。 Azure Portal、Azure CLI、または Linux 用の VM アクセス拡張機能を使用して、接続の問題を解決できます。

この記事についてさらにヘルプが必要な場合は、いつでも MSDN の Azure フォーラムとスタック オーバーフロー フォーラムで Azure エキスパートに問い合わせることができます。 または、Azure サポート インシデントを送信できます。 その場合は、 Azure サポートのサイト に移動して、 [サポートの要求] をクリックします。 Azure サポートの使用方法の詳細については、「 Microsoft Azure サポートに関する FAQ」を参照してください。

簡単なトラブルシューティング手順

トラブルシューティングの各手順を実行した後、VM に再接続してみてください。

  1. SSH 構成をリセットします
  2. ユーザーの資格情報をリセットします
  3. ネットワーク セキュリティ グループ ルールで SSH トラフィックが許可されていることを確認します。
  4. VM リソースの正常性を確認します。
    • VM が正常であると報告されていることを確認します。
    • ブート診断を有効にしている場合は、VM のブート エラーがログに報告されていないことを確認します。
  5. VM を再起動します
  6. VM を再デプロイします

詳しいトラブルシューティング手順と説明を引き続きお読みください。

SSH 接続の問題をトラブルシューティングするために使用できる方法

資格情報または SSH 構成は、次のいずれかの方法でリセットできます。

  • Azure Portal - SSH 構成または SSH キーをすばやくリセットする必要があり、Azure ツールをインストールしていない場合に最適です。
  • Azure VM シリアル コンソール - VM シリアル コンソールは、SSH 構成に関係なく動作し、VM への対話型コンソールを提供します。 実際に、シリアル コンソールは、"SSH 接続できない" 状況の解決を支援するように設計されています。 詳しくは、以下をご覧ください。
  • Azure CLI - 既にコマンド ラインにいる場合は、SSH 構成または資格情報をすばやくリセットします。 クラシック VM を使用している場合は、Azure クラシック CLI を使用できます。
  • Azure VMAccessForLinux 拡張機能 - json 定義ファイルを作成して再度使用して、SSH 構成またはユーザーの資格情報をリセットします。

トラブルシューティングの各手順を実行した後、再度 VM に接続してみてください。 それでも接続できない場合は、次の手順をお試しください。

Azure ポータルの使用

Azure Portal では、ローカル コンピューターへのツールのインストールなしで SSH 構成またはユーザーの資格情報を簡単にリセットできます。

まず Azure portal で VM を選択します。 [サポート + トラブルシューティング] セクションまで下へスクロールし、 [パスワードのリセット] を選択します (次の例を参照)。

Azure Portal で SSH 構成または資格情報をリセットする

SSH 構成をリセットする

SSH 構成をリセットするには、上のスクリーンショットのように [モード] セクションで Reset configuration only を選択してから [更新] を選択します。 この操作を完了したら、VM にもう一度アクセスしてみます。

ユーザーの SSH 資格情報をリセットする

既存のユーザーの資格情報をリセットするには、上のスクリーンショットのように [モード] セクションで Reset SSH public key または Reset password を選択します。 ユーザー名と、SSH キーまたは新しいパスワードを指定し、 [更新] を選択します。

このメニューから、VM に対して sudo 特権を持つユーザーを作成することもできます。 新しいユーザー名と、関連付けられているパスワードまたは SSH キーを入力し、 [更新] を選択します。

セキュリティ規則を確認する

IP フロー検証を使用して、ネットワーク セキュリティ グループ規則によって、仮想マシンから送受信されるトラフィックがブロックされていないかどうかを確認します。 有効なセキュリティ グループ規則を確認して、SSH ポート (既定では 22) に対して受信 "許可" NSG 規則が存在し、優先されていることを確認することもできます。 詳細については、「有効なセキュリティ規則を使用した VM トラフィック フローのトラブルシューティング」を参照してください。

ルーティングを確認する

Network Watcher の次ホップ機能を使用して、ルートが仮想マシンとの間でトラフィックのルーティングを妨げていないことを確認します。 有効なルートを見直し、ネットワーク インターフェイスのすべての有効なルートを確認することもできます。 詳細については、「有効なルートを使用した VM トラフィック フローのトラブルシューティング」を参照してください。

Azure VM シリアル コンソールの使用

Azure VM シリアル コンソールでは、Linux 仮想マシンのテキスト ベースのコンソールにアクセスできます。 コンソールを使用して、対話型シェル内で SSH 接続のトラブルシューティングを行うことができます。 シリアル コンソールを使用するための前提条件を満たしていることを確認し、次のコマンドを試して SSH 接続のトラブルシューティングをさらに行います。

SSH が実行されていることを確認する

次のコマンドを使用して、VM 上で SSH が実行されているかどうかを確認できます。

ps -aux | grep ssh

出力がある場合は、SSH が稼働しています。

SSH が実行されているポートの確認

次のコマンドを使用して、SSH が実行されているポートを確認できます。

sudo grep Port /etc/ssh/sshd_config

出力は次のようになります。

Port 22

Azure CLI の使用

まだインストールしていない場合は、最新の Azure CLI をインストールし、az login を使用して Azure アカウントにサインインします。

カスタム Linux ディスク イメージを作成してアップロードしている場合は、Microsoft Azure Linux Agent のバージョン 2.0.5 以降がインストールされていることを確認します。 ギャラリー イメージを使用して作成された VM の場合、このアクセス拡張機能は既にインストールされ、自動的に構成されています。

SSH 構成をリセットする

最初に SSH 構成を既定値にリセットして、VM 上の SSH サーバーを再起動します。 ユーザー アカウントの名前、パスワード、または SSH キーは変更されません。 次の例は、az vm user reset-ssh を使用して、myResourceGroup にある myVM という名前の VM で SSH 構成をリセットします。 実際の値を次のように使用します。

az vm user reset-ssh --resource-group myResourceGroup --name myVM

ユーザーの SSH 資格情報をリセットする

次の例は、az vm user update を使用して、myResourceGroup にある myVM という名前の VM で、myUsername の資格情報を myPassword に指定された値にリセットします。 実際の値を次のように使用します。

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

SSH キー認証を使用している場合は、特定のユーザーの SSH キーをリセットできます。 次の例では、az vm access set-linux-user を使用して、myResourceGroup 内の myVM という名前の VM で、myUsername という名前のユーザー用に ~/.ssh/id_rsa.pub に保存された SSH キーを更新します。 実際の値を次のように使用します。

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

VMAccess 拡張機能を使用する

Linux 用の VM アクセス拡張機能は、実行するアクションを定義する json ファイルを読み込みます。これらのアクションには、SSHD のリセット、SSH キーのリセット、またはユーザーの追加が含まれます。 Azure CLI を使用して VMAccess 拡張機能を呼び出すこともできますが、json ファイルは、必要であれば複数の VM で再利用できます。 この方法では、特定のシナリオで呼び出すことができる json ファイルのリポジトリを作成できます。

SSHD のリセット

次の内容を含む settings.json という名前のファイルを作成します。

{
    "reset_ssh":True
}

Azure CLI を使用した後、json ファイルを指定して VMAccessForLinux 拡張機能を呼び出すことで SSHD 接続をリセットできます。 次の例は、az vm extension set を使用して、myResourceGroup にある myVM という名前の VM で SSHD をリセットします。 実際の値を次のように使用します。

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

ユーザーの SSH 資格情報をリセットする

SSHD が正しく機能しているように思える場合は、特定のユーザーの資格情報をリセットできます。 ユーザーのパスワードをリセットするには、settings.json という名前のファイルを作成します。 次の例では、myUsername の資格情報を、myPassword に指定された値にリセットします。 次の行を、実際の値を使用して settings.json ファイルに入力します。

{
    "username":"myUsername", "password":"myPassword"
}

ユーザーの SSH キーをリセットするには、まず settings.json という名前のファイルを作成します。 次の例では、myUsername の資格情報を、myResourceGroup 内の myVM という名前の VM で myPassword に指定された値にリセットします。 次の行を、実際の値を使用して settings.json ファイルに入力します。

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

json ファイルを作成したら、Azure CLI でその json ファイルを指定して VMAccessForLinux 拡張機能を呼び出すことで、SSH ユーザーの資格情報をリセットします。 次の例では、myResourceGroup 内の myVM という名前の VM の資格情報をリセットします。 実際の値を次のように使用します。

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Azure クラシック CLI を使用する

まだインストールしていない場合は、Azure クラシック CLI をインストールし、Azure サブスクリプションに接続します。 次のコマンドを実行して、確実に Resource Manager モードを使用するようにします。

azure config mode arm

カスタム Linux ディスク イメージを作成してアップロードしている場合は、Microsoft Azure Linux Agent のバージョン 2.0.5 以降がインストールされていることを確認します。 ギャラリー イメージを使用して作成された VM の場合、このアクセス拡張機能は既にインストールされ、自動的に構成されています。

SSH 構成をリセットする

SSHD 構成自体が正しく構成されていない、またはサービスでエラーが発生した可能性があります。 SSHD をリセットして、SSH 構成自体が有効かを確認します。 最初に実行する必要があるトラブルシューティング手順は、SSHD をリセットすることです。

次の例では、myResourceGroup という名前のリソース グループ内にある myVM という名前の VM の SSHD をリセットします。 実際の VM とリソース グループ名を次のように使用します。

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

ユーザーの SSH 資格情報をリセットする

SSHD が正しく機能しているように思える場合は、特定のユーザーのパスワードをリセットできます。 次の例では、myUsername の資格情報を、myResourceGroup 内の myVM という名前の VM で myPassword に指定された値にリセットします。 実際の値を次のように使用します。

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

SSH キー認証を使用している場合は、特定のユーザーの SSH キーをリセットできます。 次の例では、myResourceGroup 内の myVMという名前の VM で、myUsername という名前のユーザー用に ~/.ssh/id_rsa.pub に保存された SSH キーを更新します。 実際の値を次のように使用します。

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

VM の再起動

SSH 構成とユーザーの資格情報をリセットした場合、またはその際にエラーが発生した場合は、根本的なコンピューティングの問題に対処するために VM の再起動を試すことができます。

Azure portal

Azure portal を使用して VM を再起動するには、次の例のように、VM を選択して [再起動] を選択します。

Azure Portal で VM を再起動する

Azure CLI

次の例では、az vm restart を使用して、myResourceGroup という名前のリソース グループ内にある myVM という名前の VM を再起動します。 実際の値を次のように使用します。

az vm restart --resource-group myResourceGroup --name myVM

Azure クラシック CLI

重要

従来の VM は、2023 年 3 月 1 日に廃止されます。

ASM の IaaS リソースを使用する場合は、2023 年 3 月 1 日までに移行を完了してください。 Azure Resource Manager の多くの機能拡張を活用するために、切り替えは早く行う必要があります。

詳細については 、「2023 年 3月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

次の例では、myResourceGroup という名前のリソース グループ内にある myVM という名前の VM を再起動します。 実際の値を次のように使用します。

azure vm restart --resource-group myResourceGroup --name myVM

VM を再デプロイする

Azure 内で VM を別のノードに再デプロイすると、基になるネットワーク問題を修正する場合があります。 VM の再デプロイについては、「新しい Azure ノードへの仮想マシンの再デプロイ」を参照してください。

注意

この操作を行うと、一時ディスクのデータが失われ、仮想マシンに関連付けられている動的 IP アドレスが更新されます。

Azure portal

Azure Portal を使用して VM を再デプロイするには、VM を選択し、 [サポート + トラブルシューティング] セクションまで下にスクロールします。 次の例のように、 [再デプロイ] を選択します。

Azure Portal で VM を再デプロイする

Azure CLI

次の例では、az vm redeploy を使用して、myResourceGroup という名前のリソース グループ内にある myVM という名前の VM を再デプロイします。 実際の値を次のように使用します。

az vm redeploy --resource-group myResourceGroup --name myVM

Azure クラシック CLI

次の例では、myResourceGroup という名前のリソース グループ内にある myVM という名前の VM を再デプロイします。 実際の値を次のように使用します。

azure vm redeploy --resource-group myResourceGroup --name myVM

クラシック デプロイ モデルを使用して作成された VM

重要

従来の VM は、2023 年 3 月 1 日に廃止されます。

ASM の IaaS リソースを使用する場合は、2023 年 3 月 1 日までに移行を完了してください。 Azure Resource Manager の多くの機能拡張を活用するために、切り替えは早く行う必要があります。

詳細については 、「2023 年 3月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

クラシック デプロイ モデルを使用して作成された VM の一般的な SSH 接続エラーを解決するには、次の手順を試してください。 各手順を実行した後、VM に再接続してみてください。

  • Azure Portal からリモート アクセスをリセットします。 Azure portal で VM を選択し、 [Reset Remote](リモートのリセット) を選択します。

  • VM を再起動します。 Azure portal で VM を選択し、 [再起動] を選択します。

  • 仮想マシンを新しい Azure ノードに VM を再デプロイします。 VM の再デプロイ方法については、「新しい Azure ノードへの仮想マシンの再デプロイ」を参照してください。

    この操作を行うと、一時ディスクのデータが失われ、仮想マシンに関連付けられている動的 IP アドレスが更新されます。

  • Linux ベースの仮想マシンのパスワードまたは SSH をリセットする方法 の指示に従って、以下の操作を行います。

    • パスワードまたは SSH キーをリセットする
    • sudo ユーザー アカウントを作成する
    • SSH 構成をリセットします。
  • プラットフォームの問題の有無について VM のリソースの状態を確認します。
    VM を選択し、 [設定] > [正常性チェック] まで下にスクロールします。

その他のリソース