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

この記事は、Bastion デプロイを構成し、ローカル コンピューター上のネイティブ クライアント (SSH または RDP) を使用して VNet 内の VM に接続する場合に役立ちます。 ネイティブ クライアント機能を使用すると、Azure CLI を使用して Bastion 経由でターゲット VM に接続し、サインイン オプションを拡張して、ローカル SSH キー ペアと Azure Active Directory (Azure AD) を含めることができます。 さらに、この機能を使用して、接続の種類とクライアントに応じてファイルをアップロードまたはダウンロードすることもできます。

ネイティブ クライアント経由の接続例を示すダイアグラム。

ネイティブ クライアント経由で接続したときに VM でできることは、ネイティブ クライアントで有効にされている機能によって異なります。 Bastion 経由のファイル転送などの機能へのアクセスの制御はサポートされていません。

Note

この構成には、Azure Bastion の Standard SKU が必要です。

この機能をデプロイした後、2 とおりの接続手順があります。

制限事項

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

前提条件

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

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

ネイティブクライアント接続をセキュリティで保護する

ネイティブクライアント接続をさらにセキュリティで保護したい場合は、ポート 22/3389 へのアクセスのみを提供することによってポート アクセスを制限できます。 ポート アクセスを制限するには、AzureBastionSubnet に次の NSG 規則をデプロイして、選択されたポートへのアクセスを許可し、その他のすべてのポートからのアクセスを拒否する必要があります。

NSG の構成を示すスクリーンショット。

ネイティブ クライアント サポート機能を構成する

この機能を構成するには、既存の Bastion デプロイを変更するか、既に指定されている機能構成を使用して Bastion をデプロイします。

既存の Bastion デプロイを変更するには

既に VNet に Bastion をデプロイしている場合は、次の構成設定を変更します。

  1. Bastion リソースの [構成] ページに移動します。 [SKU レベル] が [Standard] になっていることを確認します。 そうでない場合は、[Standard] を選択します。

  2. [ネイティブ クライアント サポート] のチェック ボックスをオンにし、変更を適用します。

    [ネイティブ クライアント サポート] ボックスをオンにして既存のホストを更新する場合の設定を示すスクリーンショット。

ネイティブ クライアント機能を使用して Bastion をデプロイするには

VNet に Bastion をまだデプロイしていない場合は、手動設定を使用して Bastion をデプロイすることで、指定されたネイティブ クライアント機能を使用してデプロイできます。 手順については、「チュートリアル - 手動設定で Bastion をデプロイする」を参照してください。 Bastion をデプロイするとき、次の設定を指定します。

  1. [Basics] タブの [インスタンスの詳細] -> [Tier] (レベル) で、[Standard] を選択します。 ネイティブ クライアント サポートには Standard SKU が必要です。

    Standard SKU が選択されている新しい bastion ホストの場合の設定。

  2. bastion ホストを作成する前に、[詳細設定] タブに移動し、[ネイティブ クライアント サポート] のチェック ボックスと、デプロイするその他の機能のチェック ボックスをオンにします。

    [ネイティブ クライアント サポート] ボックスがオンの新しい bastion ホストの設定を示すスクリーンショット。

  3. [確認と作成] をクリックして検証し、[作成] をクリックして Bastion ホストをデプロイします。

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

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

必要なロール

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

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

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

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

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 を使用する」を参照してください。

VM に接続する - Windows ネイティブ クライアント

このセクションでは、ローカル Windows コンピューター上のネイティブ クライアントから仮想マシンに接続します。 接続後にファイルのアップロードやダウンロードを行う必要がある場合は、RDP 接続を使用する必要があります。 ファイル転送の詳細については、「ファイルのアップロードまたはダウンロード」を参照してください。

接続するターゲット仮想マシンの種類に対応する例を使用します。

Windows VM に接続する

  1. Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、Bastion リソースを含んでいるサブスクリプションを選択します。

    az login
    az account list
    az account set --subscription "<subscription ID>"
    
  2. 次のいずれかのオプションの例を使用して、ターゲットの Windows VM にサインインします。 カスタム ポート値を指定する場合は、サインイン コマンドに --resource-port フィールドも含める必要があります。

    RDP:

    RDP 経由で接続するには、次のコマンドを使用します。 ここで、資格情報の入力を求められます。 ローカルのユーザー名とパスワード、または Azure Active Directory の資格情報のいずれかを使用できます。 詳細については、「Windows Azure VM と Azure AD」をご覧ください。

    az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>"
    

    重要

    Azure AD 参加済みの VM にリモート接続できるのは、VM として "同じ" ディレクトリに登録済みの Azure AD (Windows 10 20H1 以降)、参加済みの Azure AD、または Hybrid Azure AD Join を使用した Windows 10 以降の PC からのみです。

    SSH:

    この拡張機能は、az extension add --name ssh を実行することによってインストールできます。 SSH キー ペアを使用してサインインするには、次の例を使用します。

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

    ターゲット VM にサインインすると、コンピューター上のネイティブ クライアントが VM セッションで開きます (RDP セッションの場合は MSTSC、SSH セッションの場合は SSH CLI 拡張機能 (az ssh))。

Linux VM に接続する

  1. Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、Bastion リソースを含んでいるサブスクリプションを選択します。

    az login
    az account list
    az account set --subscription "<subscription ID>"
    
  2. 次のいずれかのオプションの例を使用して、ターゲットの Linux VM にサインインします。 カスタム ポート値を指定する場合は、サインイン コマンドに --resource-port フィールドも含める必要があります。

    Azure AD:

    Azure AD ログインが有効な VM にサインインする場合は、次のコマンドを使用します。 詳細については、Azure Linux VM と Azure AD に関するページをご覧ください。

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

    SSH:

    この拡張機能は、az extension add --name ssh を実行することによってインストールできます。 SSH キー ペアを使用してサインインするには、次の例を使用します。

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

    ユーザー名/パスワード:

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

    az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "password" --username "<Username>"
    
    1. ターゲット VM にサインインすると、コンピューター上のネイティブ クライアントが VM セッションで開きます (RDP セッションの場合は MSTSC、SSH セッションの場合は SSH CLI 拡張機能 (az ssh))。

VM に接続する - その他のネイティブ クライアント

このセクションでは、az network bastion tunnel コマンドを使用して、Windows 以外のローカルコンピューター (Linux PC など) 上のネイティブ クライアントから仮想マシンに接続する方法について説明します。 この方法を使用して、Windows コンピューターから接続することもできます。 これは、SSH 接続が必要で、ファイルを VM にアップロードする場合に便利です。 bastion トンネルは RDP/SSH 接続をサポートしますが、Web サーバーまたはホストを中継しません。

この接続では、ローカル コンピューターからターゲット VM へのファイルのアップロードがサポートされています。 詳細については、 ファイルのアップロードに関するページを参照してください。

  1. Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、Bastion リソースを含んでいるサブスクリプションを選択します。

    az login
    az account list
    az account set --subscription "<subscription ID>"
    
  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、任意のネイティブ クライアント、およびステップ 2 で指定したローカル コンピューター のポートを使用して、ターゲット VM に接続します。

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

    ssh <username>@127.0.0.1 -p <LocalMachinePort>
    

VM に接続する - IP アドレス

このセクションは、ネイティブ クライアントから指定されたプライベート IP アドレスを使用して、Azure Bastion 経由でオンプレミス仮想マシン、Azure 以外の仮想マシン、Azure 仮想マシンに接続する場合に役立ちます。 指定された IP アドレスを使用して上記のいずれかのコマンドで --target-resource-id--target-ip-address に置き換えて、VM に接続できます。

Note

現時点では、この機能では、Azure AD 認証やカスタム ポートとプロトコルはサポートされていません。 IP ベースの接続の詳細については、「VM への接続 - IP アドレス」を参照してください。

次のコマンドを例として使用します。

RDP:

az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>

SSH:

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

トンネル:

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

次のステップ

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