ネイティブ クライアントを使用して仮想マシンに接続する
この記事は、Bastion デプロイを構成し、ローカル コンピューター上のネイティブ クライアント (SSH または RDP) を使用して VNet 内の VM に接続する場合に役立ちます。 ネイティブ クライアント機能を使用すると、Azure CLI を使用して Bastion 経由でターゲット VM に接続し、サインイン オプションを拡張して、ローカル SSH キー ペアと Azure Active Directory (Azure AD) を含めることができます。 さらに、この機能を使用して、接続の種類とクライアントに応じてファイルをアップロードまたはダウンロードすることもできます。
ネイティブ クライアント経由で接続したときに VM でできることは、ネイティブ クライアントで有効にされている機能によって異なります。 Bastion 経由のファイル転送などの機能へのアクセスの制御はサポートされていません。
Note
この構成には、Azure Bastion の Standard SKU が必要です。
この機能をデプロイした後、2 とおりの接続手順があります。
Windows ローカル コンピューター上のネイティブ クライアントから仮想マシンに接続します。 これにより、次のことができます。
- SSH または RDP を使用して接続します。
- RDP 経由でファイルのアップロードとダウンロードを行います。
- SSH を使用して接続し、ターゲット VM にファイルをアップロードする必要がある場合は、代わりに az network bastion tunnel コマンドを使用します。
az network bastion tunnel コマンドを使用して VM に接続します。 これにより、次のことができます。
- Windows 以外のローカル コンピューター (Linux PC など) 上でネイティブ クライアントを使用します。
- 選択したネイティブ クライアントを使用します。 (これには、Windows ネイティブ クライアントも含まれます)。
- SSH または RDP を使用して接続します。 (bastion トンネルは、Web サーバーまたはホストを中継しません)。
- Bastion を使用して同時 VM セッションの設定を行います。
- ローカル コンピューターからターゲット VM にファイルをアップロードします。 ターゲット VM からローカル クライアントへのファイルのダウンロードは、現在、このコマンドではサポートされていません。
制限事項
- この機能では、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 の資格情報を使用して仮想マシンにサインインする場合は、次のいずれかの方法を使用して仮想マシンがセットアップされていることを確認してください。
- Windows VM または Linux VM に対して Azure AD ログインを有効にします。
- Azure AD 参加済みとなるよう Windows VM を構成する。
- Hybrid Azure AD 参加済みとなるよう Windows VM を構成する。
ネイティブクライアント接続をセキュリティで保護する
ネイティブクライアント接続をさらにセキュリティで保護したい場合は、ポート 22/3389 へのアクセスのみを提供することによってポート アクセスを制限できます。 ポート アクセスを制限するには、AzureBastionSubnet に次の NSG 規則をデプロイして、選択されたポートへのアクセスを許可し、その他のすべてのポートからのアクセスを拒否する必要があります。
ネイティブ クライアント サポート機能を構成する
この機能を構成するには、既存の Bastion デプロイを変更するか、既に指定されている機能構成を使用して Bastion をデプロイします。
既存の Bastion デプロイを変更するには
既に VNet に Bastion をデプロイしている場合は、次の構成設定を変更します。
Bastion リソースの [構成] ページに移動します。 [SKU レベル] が [Standard] になっていることを確認します。 そうでない場合は、[Standard] を選択します。
[ネイティブ クライアント サポート] のチェック ボックスをオンにし、変更を適用します。
ネイティブ クライアント機能を使用して Bastion をデプロイするには
VNet に Bastion をまだデプロイしていない場合は、手動設定を使用して Bastion をデプロイすることで、指定されたネイティブ クライアント機能を使用してデプロイできます。 手順については、「チュートリアル - 手動設定で Bastion をデプロイする」を参照してください。 Bastion をデプロイするとき、次の設定を指定します。
[Basics] タブの [インスタンスの詳細] -> [Tier] (レベル) で、[Standard] を選択します。 ネイティブ クライアント サポートには Standard SKU が必要です。
bastion ホストを作成する前に、[詳細設定] タブに移動し、[ネイティブ クライアント サポート] のチェック ボックスと、デプロイするその他の機能のチェック ボックスをオンにします。
[確認と作成] をクリックして検証し、[作成] をクリックして 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 に接続する
Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、Bastion リソースを含んでいるサブスクリプションを選択します。
az login az account list az account set --subscription "<subscription ID>"
次のいずれかのオプションの例を使用して、ターゲットの 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 に接続する
Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、Bastion リソースを含んでいるサブスクリプションを選択します。
az login az account list az account set --subscription "<subscription ID>"
次のいずれかのオプションの例を使用して、ターゲットの 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>"
- ターゲット 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 へのファイルのアップロードがサポートされています。 詳細については、 ファイルのアップロードに関するページを参照してください。
Azure アカウントにサインインします。 複数のサブスクリプションがある場合は、Bastion リソースを含んでいるサブスクリプションを選択します。
az login az account list az account set --subscription "<subscription ID>"
次のコマンドを使用して、ターゲット VM へのトンネルを開きます。
az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
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>"