Bastion と Linux ネイティブ クライアントを使用して仮想マシンに接続する

この記事は、ローカルの Linux コンピューター上のネイティブ クライアントを使用して VNet 内の VM に Azure Bastion 経由で接続する場合に役立ちます。 ネイティブ クライアント機能を使うと、Azure CLI を使って Bastion 経由でターゲット VM に接続し、サインイン オプションを拡張して、ローカル SSH キー ペアと Microsoft Entra ID を含めることができます。 ネイティブ クライアント接続用に Bastion を構成する詳細と手順については、「ネイティブ クライアント接続用に Bastion を構成する」を参照してください。 ネイティブ クライアント経由で接続するには、Bastion Standard SKU が必要です。

Diagram shows a connection via native client.

ネイティブ クライアント サポート用に Bastion を構成したら、ネイティブ Linux クライアントを使用して VM に接続できます。 接続に使用する方法は、接続元のクライアントと、接続先の VM の両方によって異なります。 次の一覧は、Linux ネイティブ クライアントからの接続に使用できるいくつかの方法を示しています。 使用可能なクライアントの接続と機能の組み合わせを示す完全な一覧については、「VM への接続」を参照してください。

  • az network bastion ssh を使用して Linux VM に接続します。
  • az network bastion tunnel を使用して Windows VM に接続します。
  • az network bastion tunnel を使用して任意の VM に接続します。
  • az network bastion tunnel を使用して、SSH 経由でターゲット VM にファイルをアップロードします。 ターゲット VM からローカル クライアントへのファイルのダウンロードは、現在、このコマンドではサポートされていません。

前提条件

開始する前に、以下の前提条件を確認してください。

  • CLI コマンドの最新バージョン (バージョン 2.32 以降) がインストールされていること。 az extension update --name bastion を使用して、Bastion の CLI を更新できます。 CLI コマンドのインストール方法については、「Azure CLI のインストール」および「Azure CLI を使ってみる」を参照してください。
  • Azure Bastion が、仮想ネットワーク用に既にデプロイおよび構成されていること。 手順については、「ネイティブ クライアント接続用に Bastion を構成する」を参照してください。
  • 仮想ネットワーク内の仮想マシン
  • VM のリソース ID。 リソース ID は、Azure portal で簡単に見つけることができます。 VM の [概要] ページに移動し、[JSON ビュー] リンクを選択して、[リソース JSON] を開きます。 ページの上部にあるリソース ID をクリップボードにコピーして、後で VM に接続するときに使用します。
  • Microsoft Entra の資格情報を使って仮想マシンにサインインする場合は、次のいずれかの方法を使って仮想マシンがセットアップされていることを確認してください。

ロールとポートを確認する

VM に接続するために、次のロールとポートが構成されていることを確認します。

必要なロール

  • 仮想マシンに対する閲覧者ロール。

  • 仮想マシンのプライベート IP を使用する NIC に対する閲覧者ロール。

  • Azure Bastion リソースに対する閲覧者ロール。

  • Microsoft Entra サインイン方式を使っている場合、仮想マシン管理者ログインまたは仮想マシンユーザー ログインのロール。 これを行う必要があるのは、次のいずれかの記事で説明されているプロセスを使って Microsoft Entra ログインを有効にする場合のみです。

Port

ネイティブ クライアント サポートを使用して Linux VM に接続するには、Linux VM で次のポートを開いている必要があります。

  • 受信ポート: SSH (22) または
  • 受信ポート: カスタム値 (Azure Bastion 経由で VM に接続するときに、このカスタム ポートを指定する必要があります)

ネイティブ クライアント サポートを使用して Windows VM に接続するには、Windows VM で次のポートを開いておく必要があります。

  • 受信ポート: RDP (3389) "または"
  • 受信ポート: カスタム値 (Azure Bastion 経由で VM に接続するときに、このカスタム ポートを指定する必要があります)

Azure Bastion での NSG の最適な構成方法については、「NSG アクセスと Azure Bastion を使用する」を参照してください。

Linux VM に接続する

次のセクションの手順は、az network bastion コマンドを使用して Linux ネイティブ クライアントから Linux VM に接続するのに役立ちます。 この拡張機能は、az extension add --name bastion を実行することによってインストールできます。

このコマンドを使用して接続する場合、ファイル転送はサポートされていません。 ファイルをアップロードしたい場合は、代わりに az network bastion tunnel コマンドを使用して接続します。

このコマンドにより、次のことができます。

  • SSH を使用して Linux VM に接続します。
  • Microsoft Entra ID によって認証する
  • 仮想ネットワーク内の同時 VM セッションに接続します。

サインインするには、次の例のいずれかを使用します。 ターゲット VM にサインインすると、コンピューター上のネイティブ クライアントが VM セッションで開きます。

SSH キー ペア

SSH キー ペアを使用して VM にサインインするには、次の例を使用します。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"

Microsoft Entra 認証

Microsoft Entra ログインが有効な VM にサインインする場合は、次の例を使います。 詳細については、「Azure Linux VM と Microsoft Entra ID」を参照してください。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "AAD"

ユーザー名/パスワード

ローカルのユーザー名とパスワードを使用して VM にサインインする場合は、次の例を使用します。 その後、ターゲット VM のパスワードを入力するように求められます。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "password" --username "<Username>"

Linux VM IP アドレスへの SSH

リソース ID ではなく、VM のプライベート IP アドレスに接続できます。 この種類の接続を使う場合、Microsoft Entra 認証と、カスタムのポートとプロトコルはサポートされないことに注意してください。 IP ベースの接続について詳しくは、「VM への接続 - IP アドレス」を参照してください。

az network bastion コマンドを使用して、--target-resource-id--target-ip-address および VM に接続する特定の IP アドレスに置き換えます。 次の例では、認証方法に --ssh-key を使用します。

az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-addres "<VMIPAddress>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"

VMへの接続 - tunnel コマンド

VM に接続するもう 1 つの方法として、az network bastion tunnel コマンドがあります。 このコマンドを使用すると、次の操作を実行できます。

  • Windows "以外" のローカル コンピューター上のネイティブ クライアントから接続します。 (たとえば、Linux コンピューターなど。)
  • SSH または RDP を使用して VM に接続します。 (bastion トンネルは、Web サーバーまたはホストを中継しません)。
  • 選択したネイティブ クライアントを使用します。
  • ローカル コンピューターからターゲット VM にファイルをアップロードします。 ターゲット VM からローカル クライアントへのファイルのダウンロードは、現在、このコマンドではサポートされていません。

制限事項:

  • この機能では、Azure Key Vault に格納されている SSH プライベート キーを使用したサインインはサポートされていません。 SSH キー ペアを使用して Linux VM にサインインする前に、ローカル コンピューター上のファイルに秘密キーをダウンロードします。
  • この機能は Cloud Shell でサポートされていません。

手順:

  1. az login を使用して Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、az account list を使用してそれらを表示し、az account set --subscription "<subscription ID>" を使用して Bastion リソースを含んでいるサブスクリプションを選択できます。

  2. ターゲット VMへのトンネルを開きます。

    az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
    
  3. SSH または RDP、任意のネイティブ クライアント、および先の手順で指定したローカル マシンのポートを使用して、ターゲット VM に接続します。

    たとえば、ローカル コンピュータに OpenSSH クライアントがインストールされている場合は、次のコマンドを使用できます。

    ssh <username>@127.0.0.1 -p <LocalMachinePort>
    

VM の IP アドレスへのトンネル接続

リソース ID ではなく、VM のプライベート IP アドレスに接続することもできます。 この種類の接続を使う場合、Microsoft Entra 認証と、カスタム ポートおよびプロトコルはサポートされません。 IP ベースの接続について詳しくは、「VM への接続 - IP アドレス」を参照してください。

az network bastion tunnel コマンドを使用して、--target-resource-id--target-ip-address および VM に接続する特定の IP アドレスに置き換えます。

az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"

マルチ接続トンネル

  1. $HOME.ssh\config に次のものを追加します。

    Host tunneltunnel
      HostName 127.0.0.1
      Port 2222
      User mylogin
      StrictHostKeyChecking=No
      UserKnownHostsFile=\\.\NUL
    
  2. 確立されたトンネル接続にトンネル接続を追加します。

    az network bastion tunnel --name mybastion --resource-group myrg --target-resource-id /subscriptions/<mysubscription>/resourceGroups/myrg/providers/Microsoft.Compute/virtualMachines/myvm --resource-port 22 --port 22
    
  3. bastion トンネルに ssh トンネルを作成します。

    ssh -L 2222:127.0.0.1:22 mylogin@127.0.0.1
    
  4. VS Code を使用してトンネル接続に接続します。

次のステップ

ファイルのアップロードまたはダウンロード