Azure Bastionではこれまでテキストのコピペはできたものの、ファイル転送はサポートされていませんでした。
個人的にはセキュリティの観点から、この仕様はよいなと思っていたのですが、最近ファイル転送機能がプレビューリリースされたので、Proxy環境下でも利用できるのか試してみました。
Azure Bastion now supports file transfer via the native client
結論
- Proxy環境下でも利用可能でした。ネイティブクライアントはmstscやTeratermを使うことになりますが、内部的には443でアクセスし3389をトンネリングするような動きになっているようです。
Azure Bastion作成
-
公式ページ を参考にAzure Bastionを作成します。
-
Basic SKUだと使えないため、Standard SKUに変更します。
- StandardからBasicへのダウングレードはできないため注意
Azure CLIバージョンアップ
- 最新のAzure CLIが必要なため、ローカルのAzure CLIをバージョンアップします。
RDP接続
- ローカルPCでAzureアカウントにログインします。
$ az login
$ az account list -o table
$ az account set --subscription [SubscriptionId]
- mstscを使ったRDP接続をします。[VMResourceId]は、Azure Portalから接続したいVMの[プロパティ]→[リソースID]の順にコピーしてもってきます。
$ az network bastion rdp --name [BastionName] --resource-group [ResourceGroupName] --target-resource-id [VMResourceId]
- コマンド実行すると見慣れたmstscが起動します。いつものRDP接続なので、ファイルコピペでダウンロード/アップロード可能です。
SSH接続
- ローカルPCでAzureアカウントにログインします。
$ az login
$ az account list -o table
$ az account set --subscription [SubscriptionId]
- ローカルPCからターゲットVMにトンネルをはります。ローカルのポートは使っていない任意のポートを指定します。例えば55555とか。
$ az network bastion tunnel --name [BastionName] --resource-group [ResourceGroupName] --target-resource-id [VMResourceId] --resource-port "22" --port [任意のローカルポート]
-
コマンドプロンプトが返ってこずにトンネルがはられた状態になります。この状態でTeratermなどのSSHクライアントを立ち上げて接続します。接続先はlocalhost、ポートは事前に指定した任意のポート番号を指定します。
-
あとはTeratermの機能でファイルのダウンロード/アップロード可能です。
以上