普段私はAzureのWindows VMにログインする際に、Bationというサービスを利用して接続しています。以前はAzure Portalから接続していましたが、最近Bastionのネイティブクライアントという機能が使えるようになり、自端末からRDPクライアントを使って接続できるようになりました。
ネイティブクライアントで接続するときには、RDPクライアントの設定でマルチモニターがデフォルトで有効になっています。今回は、この設定を無効化する方法について記載します。
結論
以下のコマンドを実行することでRDPクライアントの設定画面が起動します。その設定画面でマルチモニターをオフにして接続します。
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --configure
契機
Bastionのネイティブクライアント機能は本当に便利だと思います。以前のAzure Portalからの接続ではファイルのコピーができずに毎回Storage Accountを経由してローカルの自端末とVMとの間でやり取りを行っていました。しかし、ネイティブクライアントを用いて、RDPクライアントから接続することで、ファイルのコピーも問題なく行えるので利便性が向上します。また、Portalだと定期的にセッションが切れてログインし直すことになってしまいますが、RDPクライアントからであればそれもそこまで問題にはなりません。
しかし、1つだけ困ったことがありました。それがRDPのマルチモニター設定です。ネイティブクライアントで接続する際は、デフォルトでオンになっているため、自端末でRDPウィンドウを最大化すると2画面ともAzure VMの画面になってしまいます。自端末とAzure VMを同時に開きながら作業したいことが多いので困りました。さらに、ネイティブクライアントでRDP接続するときにはRDPクライアントの設定ウィンドウが表示されずにいきなりパスワード入力画面が表示されてしまいます。
このマルチモニターの無効化にやや手間取ったため、今回はその設定方法についてまとめます。それではさっそく見ていきたいと思います。
マルチモニター設定手順
–configureオプションをつけて実行
ネイティブクライアントでRDP接続するためには以下のコマンドを接続したい端末上で実行します。
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>"
しかしこれだと先ほど書いた通り、RDPクライアントの設定がスキップされてしまいます。そこでRDPクライアントの設定を行うために「–configure」オプションを追加します。
az network bastion rdp --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --configure
すると、通常RDP接続するときと同じようにRDPクライアントの設定画面が起動します。
あとは簡単です。画面タブの画面の設定から「リモートセッションですべてのモニターを使用する」のチェックを外します。デフォルトではこれにチェックがついています。
これでマルチモニター設定が解除できたので、いつも通りパスワードを入力して接続します。これだけでOKです。
おまけ
マルチモニター無効化をデフォルト設定にはできない
マルチモニターの無効化手順は以上です。しかし、接続するたびに毎回チェックボタンを外さないといけないのは少々面倒ですね。デフォルトでマルチモニターを無効にできたらいいのですが、現状はまだ無理なようです。「az network bastion rdp」から接続する際はマルチモニターがデフォルトで有効化されています。Azure CLIのGithub上のissueにもデフォルトでオフにさせてほしいといった要望が上がっているので、いつか対応されるとうれしいです。
RDPファイルを利用した接続
「–configureオプション」をつけてRDPクライアントを起動し、マルチモニターを無効化した後で設定をrdpファイルとしてローカルに保存します。このrdpファイルの中身を見てみましょう。
一部情報は伏せていますが、まず3行目でmultimonが0でありマルチモニターが無効化されていることが分かります。また8行目にgatewayaccesstokenという項目があります。ここが認証情報を含んだトークンを設定する項目のようです。
このrdpファイルを実行することで数時間の間であれば、毎回コマンドを実行することなく直接RDP接続できました。しかし、さすがに翌日はトークンの期限が切れていたため接続はできませんでした。トークンの期限がどの程度なのかはわかりませんが、rdpファイルを保存しておけば、2回目以降は多少楽に接続できるかもしれません。ただし、機密情報が記載されているので取り扱いには注意が必要ですね。
full address:s:xxxxxxxxxxx:3389 alternate full address:s:xxxxxxxxxx:3389 use multimon:i:0 gatewaycredentialssource:i:5 gatewayusagemethod:i:1 gatewayprofileusagemethod:i:1 gatewayhostname:s:xxxxxxxxxx.bastion.azure.com gatewayaccesstoken:s:xxxxxxxxx signscope:s:Full Address,Alternate Full Address,GatewayHostname,GatewayUsageMethod,GatewayProfileUsageMethod,GatewayCredentialsSource signature:s:xxxxxxxxxxxxx screen mode id:i:2 desktopwidth:i:800 desktopheight:i:600
コメント