はじめに
Azure Bastion は、仮想マシン(VM)にパブリック IP を割り当てずに RDP/SSH 接続できるサービスです。ただし、Azure Portal のブラウザ画面から接続する場合、次のような制約があります。
- クリップボード連携が限定的: テキスト以外(画像やファイル)の貼り付けに対応していない
- 描画のもたつき: Power BI Desktop や Visual Studio などの負荷の高いツールでは、描画に遅延が生じやすい
- 画面領域の制約: ブラウザのタブや枠が表示され、マルチモニターにも対応していない
Azure Bastion には ネイティブクライアント接続 という機能があり、普段使い慣れた「リモートデスクトップ接続(mstsc.exe)」や SSH クライアントを使って、Bastion 経由で VM に接続できます。
本記事では、この機能を使ってセキュリティを維持したまま、ローカル PC に近い操作感で VM を扱う方法を、RDP(Windows)と SSH(Linux)の両方について解説します。
参考: Configure Bastion for native client connections(Microsoft Learn)
“The native client feature lets you connect to your target VMs via Bastion using Azure CLI, and expands your sign-in options to include local SSH key pair and Microsoft Entra ID.”
(ネイティブクライアント機能では、Azure CLI を使って Bastion 経由で対象 VM に接続でき、ローカルの SSH キーペアや Microsoft Entra ID といったサインイン方法も利用できます。)
https://learn.microsoft.com/en-us/azure/bastion/native-client
- メリット: 負荷の高いツールも快適に扱える、ネイティブ接続の利点
- 準備: 必要な SKU と CLI 拡張機能(Standard SKU 以上が必要)
- 実践: RDP(Windows)と SSH(Linux)、tunnel それぞれの接続手順
- 注意点: ファイル転送やカスタムポートなど、利用時の制約
ネイティブクライアント接続のメリット
ブラウザ版でも基本的な操作は可能ですが、ネイティブ接続には次のような利点があります。
① パフォーマンス: 負荷の高い GUI ツールも快適に動作する
ブラウザ版 Bastion は画面描画を HTML5 ベースで転送するため、動きの激しい画面や高解像度の描画には限界があります。Power BI Desktop で大量のデータポイントを含むグラフを操作したり、Visual Studio でコードをスクロールしたりすると、描画遅延を感じやすくなります。
ネイティブ接続では RDP プロトコルを直接利用するため、ローカル PC に近い描画性能で操作できます。
② 機能性: ファイル転送やマルチモニターに対応
ブラウザ版で制約となりやすいのが、ローカル PC との連携です。ネイティブ接続では RDP クライアントの標準機能をそのまま利用できます。
- ファイル転送
-
ローカル PC のドライブをリダイレクト(共有)でき、エクスプローラー上のコピー&ペーストで VM へファイルを送れます。
- マルチモニター
-
全画面表示の設定により、複数ディスプレイで作業領域を確保できます。
③ 操作感: ショートカットキーが VM 側に送られる
ブラウザ版では、Alt + Tab などの操作がローカル PC 側に取られてしまう場合があります。ネイティブ接続ではキーボード入力が VM 側にキャプチャされるため、ショートカットキーを多用する作業でも扱いやすくなります。
なお、いずれの接続方式でも RDP/SSH の通信は TLS 経由・ポート 443 で中継されるため、VM 側で 3389(RDP)や 22(SSH)をインターネットに公開する必要はありません。
ブラウザ接続との使い分け
ブラウザ版にも手軽さという利点があります。状況に応じて使い分けるとよいでしょう。
| 接続方法 | 適したシーン |
|---|---|
| ブラウザ接続 | ・外出先や普段使わない PC からの緊急対応 ・Azure CLI のセットアップを省きたいとき ・ログ確認など短時間の軽い作業 |
| ネイティブ接続 | ・Power BI、Visual Studio などの開発・構築作業 ・ファイルのアップロード/ダウンロードを頻繁に行うとき ・長時間にわたる本格的な作業 |
前提条件と準備
ネイティブ接続を利用するには、いくつかの前提条件があります。特に SKU と CLI 拡張機能に注意が必要です。
① Bastion の SKU は Standard 以上が必要
最も重要なポイントです。Azure Bastion は現在 Developer / Basic / Standard / Premium の 4 つの SKU を提供していますが、ネイティブクライアント接続は Standard SKU 以上で利用できます。Basic および Developer SKU では利用できません。
参考: Choose the right Azure Bastion SKU(Microsoft Learn)
“Standard SKU includes advanced features (native client, shareable links, IP-based connections, custom ports, file transfer).”
(Standard SKU には、ネイティブクライアント、共有可能リンク、IP ベース接続、カスタムポート、ファイル転送といった高度な機能が含まれます。)
https://learn.microsoft.com/en-us/azure/bastion/bastion-sku-comparison
現在 Basic を利用している場合は、Azure Portal の Bastion 設定画面から Standard へアップグレードできます(アップグレードは再作成なしで反映されます)。なお、SKU のダウングレードは非対応で、下位 SKU に戻すには削除・再作成が必要になる点に注意してください。
② 仮想マシンと Bastion の構築
まだ VM や Bastion を作成していない場合は、先に環境を構築しておきます。基本的な VNet や Bastion の作成手順については、関連記事『Azure Private Endpoint の設定手順|Blob Storage への閉域接続と DNS 設定』内の「Bastion の作成」手順も参考になります。
③ クライアント側の準備(Azure CLI と拡張機能)
ネイティブ接続には、ローカル PC に Azure CLI(バージョン 2.32 以降) がインストールされている必要があります。次のコマンドでバージョンを確認できます。
az --version参考: File transfer via native client(Microsoft Learn)
“Install Azure CLI (version 2.32 or later) to run the commands in this article.”
(本記事のコマンドを実行するには、Azure CLI バージョン 2.32 以降をインストールしてください。)
https://learn.microsoft.com/en-us/azure/bastion/vm-upload-download-native
あわせて、接続方法に応じて以下の拡張機能を導入しておくとスムーズです。bastion 拡張機能は az network bastion コマンドの初回実行時に自動インストールされますが、SSH キーや Entra ID 認証を使う場合は ssh 拡張機能が別途必要になります。
# Bastion 拡張機能(未導入の場合)
az extension add --name bastion
# SSH 拡張機能(SSH キー / Entra ID 認証を使う場合)
az extension add --name sshAzure CLI 自体が未インストールの場合は、Microsoft 公式サイトのインストーラーから導入できます。
接続手順|RDP・SSH・tunnel
事前設定: ネイティブクライアントサポートの有効化
Standard SKU にアップグレードしただけでは、まだネイティブ接続は有効になりません。Azure Portal から機能を明示的に有効化します。
- Azure Portal で対象の Bastion リソース を開きます
- 左メニューの 「構成(Configuration)」 を選択します
- 「ネイティブ クライアントのサポート(Native client support)」 のチェックボックスにチェックを入れます
- 画面上部の 「適用(Apply)」 を選択します


更新が完了するまで数分かかります。これで Bastion 側の受け入れ準備は完了です。
なお、接続コマンドはいずれも、はじめに az login で Azure へサインインしてから実行します。
az loginブラウザが起動するので、対象のアカウントでサインインします。
RDP で Windows VM に接続する
Windows VM へは az network bastion rdp を使用します。< > の部分はご自身の環境に合わせて置き換えてください。
az network bastion rdp --name "<Bastion名>" --resource-group "<リソースグループ名>" --target-resource-id "<接続したいVMのリソースID>"参考: Connect to a VM using Bastion – Windows native client(Microsoft Learn)
“Once you sign in to your target VM, the native client on your computer opens up with your VM session via MSTSC.”
(対象 VM へのサインインが完了すると、ローカル PC のネイティブクライアント(MSTSC)で VM のセッションが開きます。)
https://learn.microsoft.com/en-us/azure/bastion/connect-vm-native-client-windows補足: VM のリソース ID の確認方法
対象 VM の 「概要」ページにある「JSON ビュー」 を開くと、/subscriptions/...から始まるリソース ID を確認できます。VM の「設定」>「プロパティ」画面からもコピーできます。
コマンドを実行して数秒待つと、見慣れた 「Windows セキュリティ(資格情報の入力画面)」 が表示されます。VM のユーザー名とパスワードを入力すると、ネイティブアプリ(mstsc.exe)でのリモートデスクトップ接続が開始されます。


SSH で Linux VM に接続する
Linux VM へは az network bastion ssh を使用します。認証方式は SSH キーペア / ユーザー名・パスワード / Microsoft Entra ID の 3 種類から選べます。
① SSH キーペアで接続する
az network bastion ssh --name "<Bastion名>" --resource-group "<リソースグループ名>" --target-resource-id "<VMのリソースID>" --auth-type "ssh-key" --username "<ユーザー名>" --ssh-key "<秘密鍵のファイルパス>"② ユーザー名・パスワードで接続する
az network bastion ssh --name "<Bastion名>" --resource-group "<リソースグループ名>" --target-resource-id "<VMのリソースID>" --auth-type "password" --username "<ユーザー名>"実行後にパスワードの入力を求められます。
③ Microsoft Entra ID で接続する
az network bastion ssh --name "<Bastion名>" --resource-group "<リソースグループ名>" --target-resource-id "<VMのリソースID>" --auth-type "AAD"Entra ID 認証を使う場合、対象の Linux VM に AADSSHLoginForLinux 拡張機能が導入されている必要があります。
参考: Connect to a VM using Bastion – Windows native client(Microsoft Learn)
“The extension can be installed by running, az extension add –name ssh.”
(az extension add --name sshを実行すると拡張機能をインストールできます。)
https://learn.microsoft.com/en-us/azure/bastion/connect-vm-native-client-windows
SSH キー認証や Entra ID 認証では ssh 拡張機能が必要になるため、前提条件のセクションで案内した az extension add --name ssh を事前に実行しておくとスムーズです。なお、Azure Key Vault に保存した SSH 秘密鍵を直接指定するサインインには対応していないため、接続前にローカルへ秘密鍵をダウンロードしておく必要があります。
tunnel で任意の VM・OS に接続する
az network bastion ssh や rdp はそれぞれ Linux・Windows を主な対象としますが、macOS や Linux のローカル PC から接続したい場合や、任意のネイティブクライアントを使いたい場合は az network bastion tunnel が適しています。
tunnel コマンドは、ローカル PC の指定ポートと VM のポートを Bastion 経由でつなぐトンネルを確立します。確立後は、そのローカルポートに対して普段使いの SSH/RDP クライアントから接続します。
# VM のポート 22 を、ローカルの 2222 番ポートにトンネルする例
az network bastion tunnel --name "<Bastion名>" --resource-group "<リソースグループ名>" --target-resource-id "<VMのリソースID>" --resource-port 22 --port 2222このコマンドは実行中、トンネルを開いたまま待機します。別のターミナルを開き、ローカルポートに対して接続します。
ssh -p 2222 <ユーザー名>@127.0.0.1参考: Connect to a VM using Bastion – Windows native client(Microsoft Learn)
“Connect from native clients on non-Windows local computers. Connect to a VM using SSH or RDP. Use the native client of your choice.”
(非 Windows のローカル PC から接続でき、SSH または RDP で VM に接続し、任意のネイティブクライアントを利用できます。)
https://learn.microsoft.com/en-us/azure/bastion/connect-vm-native-client-windows
tunnel コマンドは、データベースや内部 Web アプリなど VM 上で動作するサービスへのポート転送にも応用できます。たとえば PostgreSQL の 5432 番ポートをトンネルすれば、ローカルの psql クライアントからパブリック IP を持たない VM 上の DB へ接続できます。
接続先を IP アドレスで指定する場合は、--target-resource-id の代わりに --target-ip-address を使用します。ただし IP ベース接続には後述の制約がある点に注意してください。
az network bastion tunnel --name "<Bastion名>" --resource-group "<リソースグループ名>" --target-ip-address "<VMのプライベートIP>" --resource-port 22 --port 2222ネイティブクライアント接続の制約事項
導入前に把握しておきたい主な制約を整理します。「できること」だけでなく「できないこと」を事前に確認しておくことで、運用後のトラブルを避けやすくなります。
- Azure Key Vault の SSH 鍵は直接指定できない
-
Key Vault に保存した SSH 秘密鍵を使ったサインインには対応していません。接続前にローカルへ秘密鍵をダウンロードしておく必要があります。
- Cloud Shell からは利用できない
-
ネイティブクライアント接続は Cloud Shell 上では動作しません。ローカル PC の Azure CLI から実行します。参考: Configure Bastion for native client connections(Microsoft Learn)
“Connecting using a native client isn’t supported on Cloud Shell.”
(ネイティブクライアントを使った接続は Cloud Shell ではサポートされていません。)
https://learn.microsoft.com/en-us/azure/bastion/native-client - IP ベース接続には機能制限がある
-
--target-ip-addressでプライベート IP を指定する接続では、Microsoft Entra 認証やカスタムポート・カスタムプロトコルは利用できません。これらの機能が必要な場合は、リソース ID 指定での接続を選択します。 - ファイル転送はネイティブクライアント経由のみ
-
ファイルのアップロード・ダウンロードは、PowerShell や Azure Portal からは行えず、ネイティブクライアント経由でのみ対応します。Windows ネイティブクライアントと RDP の組み合わせでアップロード・ダウンロードができ、SSH でのファイル転送は tunnel コマンドを利用します。
- Entra ID 参加 VM への RDP には条件がある
-
Microsoft Entra ID に参加した VM への RDP 接続は、Entra 登録済みの Windows 10 20H2 以降の PC からのみ許可されます。
コマンドの使い分けと SKU の選定
接続コマンドの使い分け
3 つの接続コマンドは、対象 OS や用途によって使い分けます。
| コマンド | 主な対象 | 特徴 |
|---|---|---|
az network bastion rdp | Windows VM | Windows ネイティブクライアント(mstsc)で接続。RDP でのファイル転送に対応 |
az network bastion ssh | Linux VM | ssh-key / password / Entra ID 認証に対応 |
az network bastion tunnel | 任意の VM・OS | 非 Windows のローカル PC、任意クライアント、ポート転送、ファイル転送に対応 |
SKU 選定の早見
ネイティブクライアント接続は Standard 以上が前提ですが、用途に応じて最適な SKU は異なります。
| SKU | 主な用途 | ネイティブ接続 |
|---|---|---|
| Developer | 検証・開発(無償、1 接続のみ、共有インフラ) | 非対応 |
| Basic | 中規模の本番接続(固定容量) | 非対応 |
| Standard | ネイティブ接続・ファイル転送・カスタムポートなど | 対応 |
| Premium | Standard の全機能+セッション記録・プライベート専用デプロイ | 対応 |
参考: What is Azure Bastion?(Microsoft Learn)
“Premium: Includes all Standard features plus session recording for compliance and private-only deployment.”
(Premium は Standard の全機能に加え、コンプライアンス向けのセッション記録とプライベート専用デプロイに対応します。)
https://learn.microsoft.com/en-us/azure/bastion/bastion-overview
監査要件でセッション記録が必要な場合は Premium、ネイティブ接続が目的であれば Standard、検証用途であれば無償の Developer(ネイティブ接続は不可)といった選び方が目安になります。
トラブルシューティング
コマンドを実行してもエラーが出る、接続画面が起動しないといった場合は、以下を順に確認してみてください。
最も多い原因です。Basic / Developer SKU ではコマンドが利用できません。アップグレード後に「ネイティブ クライアントのサポート」のチェックを入れ忘れていないかもあわせて確認します。
PC の再起動後や一定時間が経過した場合、セッションが切れていることがあります。再度 az login を実行すると解消する場合があります。
--target-resource-id には VM 名ではなく /subscriptions/... から始まる ID を指定します。VM 概要ページの「JSON ビュー」から確認できます。
SSH キー認証や Entra ID 認証でエラーが出る場合、ssh 拡張機能が未導入の可能性があります。az extension add --name ssh で導入後、再度実行してみてください。
バージョンが古いとコマンドが認識されないことがあります。az --version で 2.32 以降であることを確認し、必要に応じて az extension update --name bastion で拡張機能を更新します。
tunnel コマンドはトンネルを開いたまま待機します。トンネルを実行したターミナルは閉じず、別のターミナルからローカルポート(例: 127.0.0.1:2222)に対して接続しているか確認します。
まとめ
本記事では、Azure Bastion のネイティブクライアント接続について、RDP・SSH・tunnel の手順と制約を解説しました。
- ネイティブ接続: mstsc や SSH クライアントで、ローカル PC に近い操作感で VM を扱える
- 前提: Standard SKU 以上と Azure CLI 2.32 以降(SSH キー・Entra ID 認証は
ssh拡張機能が必要) - RDP:
az network bastion rdpで Windows VM に接続 - SSH:
az network bastion sshで Linux VM に接続(ssh-key / password / Entra ID) - tunnel:
az network bastion tunnelで任意の OS・クライアント、ポート転送、ファイル転送に対応 - 制約: Key Vault 鍵・Cloud Shell は非対応、IP ベース接続は Entra 認証・カスタムポート不可
- 安全性: RDP/SSH を TLS・ポート 443 で中継し、3389/22 をインターネット公開せずに済む
以上、最後までお読みいただきありがとうございました。


