Hyper-V上の仮想マシンにRemote Desktop Connection Manager(RDCMan)で接続する

Hyper-V上に作成した仮想マシン(以下、ゲストVM)は、Hyper-V マネージャーからVirtual Machine connectionを使ってGUIで操作することが出来ます。

ただ、特に複数台のゲストVMを操作する際は、モニタの解像度などによっては操作や切り替えが難しいことがあります。

本記事では、リモート デスクトップ接続マネージャー(Remote Desktop Connection Manager / 以下、RDCMan)を利用して、Hyper-V上のゲストVMをスムーズに切り替えて操作する方法を解説します。

前提

今回は、研修毎に削除するラボ環境としての利用を想定しており、スタンドアロン環境として本番環境との接続が無い想定です。

レジストリ設定なども含むので、本番環境での利用時は、リスクも含めて検討の上でご利用ください。

また、今回は、Hyper-Vホスト自身でRDCManを利用します。

RDCManの特徴

RDCManは、MicrosoftがSysinternalsというブランドで公開しているユーティリティー類の一つです。

元々は、複数のリモートデスクトップ接続を管理できるものだったのですが、バージョンアップでHyper-V上のゲストVMも操作できるようになっています。

RDCManを利用してゲストVMを操作するメリットです。

  • 複数の仮想マシンをタブで切り替えることが出来る
  • プライベート仮想スイッチ上の仮想マシンも操作出来る*1

事前準備:レジストリ設定

RDCManでゲストVMに接続するには、「Microsoft Virtual Console Service/*」に対して資格情報の委任を許可する必要があります。

「RDCman利用時に必要な設定」と明記されているわけではないのですが、下記サイトの「方法 1: レジストリを構成する」を参考に、レジストリを設定します

Vmconnect を使用して仮想マシンに接続できない - Windows Server | Microsoft Learn

今回は、まとめて実行する簡単なスクリプトを用意しました。Hyper-Vホスト上で以下を実行します。

$basePath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaults"

New-ItemProperty -Path "$basePath\AllowDefaultCredentials" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowDefaultCredentialsDomain" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowFreshCredentials" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowFreshCredentialsDomain" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowFreshCredentialsWhenNTLMOnly" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowFreshCredentialsWhenNTLMOnlyDomain" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowSavedCredentials" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowSavedCredentialsDomain" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force
New-ItemProperty -Path "$basePath\AllowSavedCredentialsWhenNTLMOnly" -Name "Hyper-V" -Value "Microsoft Virtual Console Service/*" -PropertyType String -Force

RDCManのダウンロードと起動

続いて、RDCManを利用できるようにします。Hyper-Vホストで下記サイトにアクセスします。

リモート デスクトップ接続マネージャー - Sysinternals | Microsoft Learn

「リモートデスクトップ接続マネージャー」または「今すぐ実行」をクリックして、RDCManをダウンロードします。

前者の場合はZipファイル形式でダウンロードされるので、任意のフォルダに展開します。後者の場合は次の手順に進みます。

「RDCMan.exe」をダブルクリックして実行します。*2

ゲストVMのIDを取得

RDCManをリモートデスクトップ接続クライアントの代わりとして利用する場合は、ホスト名やIPアドレスを使って接続が出来ますが、Hyper-V上のゲストVMに接続する場合は、Hyper-Vホスト側でIDを確認する必要があります。

Hyper-Vホスト上で、以下のコマンドレットを実行します。

Get-VM | Select Name, Id

表示されたゲストVMのIdを控えておきます。

Name Id
---- --
DC01 *****-*****-*****-*****
VM01 *****-*****-*****-*****

ゲストVMの登録

Hyper-Vホスト上でRDCmanを起動し、「File」-「New」を開きます。

RDCManでは、仮想マシンへの接続情報を保存するために、まずは「RDCMan Groups」というファイルを作成する必要があります。今回は例として「AD DS」とします。

続いて、ゲストVMを登録します。先ほど作成したRDCMan Groupsを右クリックし、「Add Server」を選択します。

「VM console connect」にチェックを入れると、IDの入力欄が表示されます。先ほど控えておいたゲストVMのIDを入力します。

Server nameとDisplay nameを以下の通り入力し、「Add」をクリックします。

  • Server name
    • Hyper-Vホストのホスト名またはIPアドレス
    • 今回はHyper-Vホスト上でRDCManを起動するので、「localhost」と記載
  • Display name
    • RDCMan上での表示名*3
    • 今回はゲストVM名と同じ名称で設定

これで、RDCMan Groupsの中にゲストVMが登録されました。

複数台ある場合は、同様の手順を繰り返して登録します。

登録後、RDCManで接続情報を保存しておきます。グループ単位で保存する事も出来ますが、今回は「Save All」で保存します。

ゲストVMへの接続

RDCManからゲストVMの起動は出来ないので、まずはHyper-V マネージャーなどで起動をしておきます。

起動後、RDCManで対象の仮想マシンをダブルクリックします。

認証が求められたら「Hyper-Vホストの認証情報」を入力し「OK」をクリックします。

ロックの解除が必要な場合、通常であればCtrl+Alt+Enterのキー入力が必要になるのですが、今回はRDCManの機能で代用します。

RDCMan上でゲストを右クリックし、「Send kyes」から「Security dialog」を選択します。

パスワードを入力し、ゲストOSにサインインします。

他のゲストVMにも同時にサインインする事が可能です。サインイン後はRDCManの左ペインで操作端末を簡単に切り替えることが出来ます。

便利な利用方法

RDCManで認証情報を保存しておくことが可能です。

この設定により、「Hyper-Vホストの認証情報」が不要になります。

ただし、当然ながらセキュリティとのトレードオフになります。特に、保存するのがゲストVMではなくHyper-Vホストの認証情報になるので、利用時は十分に検討を行ってください。

リモートデスクトップ接続利用時との差異

RDCManを通常のリモートデスクトップ接続(RDP)で利用する際とHyper-VのゲストVMに利用する際は、ほぼ同じ操作感となりますが、一部挙動が異なります。

認証情報

前述の通り、Hyper-VのゲストVMに接続する際は、認証が2回発生します。

  1. Hyper-Vホストの認証
  2. ゲストVMの認証

また、1の認証情報はRDCMan上に保存可能ですが、2の認証情報は保存できず、RDPでの利用時とは使い勝手が少し落ちます。

クリップボード

確認した限りでは、ゲストVMに対してクリップボードの送信が出来ませんでした。

ホストからデータや文字をコピーしたい場合は、Virtual Machine connection経由での操作が必要になるようです。

ゲストVMの解像度

RDCManをRDPで利用している場合は、RDCManの画面サイズに合わせてリモート先の解像度を調整してくれる「Same as client area」という便利な設定があるのですが、この設定がHyper-V上のゲストVMには適用されません。

その他の解像度指定も反映されず、ゲストVM側の解像度設定に固定されるようです。

接続エラーと解決方法

その他、本記事を書く際に遭遇したエラーとその解決方法について記載します。

Unknown disconnection reason 4

RDCManのid設定が間違っていた際に発生しました。

先頭にスペースが入っていて気づかなかった、という事もあったので、スペースの有無も含めてご確認ください。

DNS name lookup failure

RDCmanでゲストVMを登録する際、Server nameが誤っていると発生します。

Server nameはゲストVMではなく、Hyper-VホストのIPアドレスやホスト名を入れる必要があります。

※ 今回のようにHyper-Vホスト上でRDCManを利用する場合は「localhost」や「127.0.0.1」も利用可能です。

Unknown disconnection reason 3848

本記事の「事前準備:レジストリ設定」の設定を行っていない場合に発生します。

※ レジストリ設定後、再起動などは不要でした

おわりに

RDCManによるHyper-V上のゲストVM操作は時々必要になるので、改めてまとめてみました。

便利な一方でRDPに比べると完全な代替にはならない部分があるので、必要に応じてVirtual Machine connectionと使い分ける利用方法が現実的だと思います。

*1:Hyper-VホストとTCP/IPで通信できる必要が無い

*2:インストールは不要です。ダウンロードするだけで利用できます。

*3:ゲストVMの名称と異なっていても問題なし

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。Power AutomateやLogic Appsが好きで、キーマンズネットPower Automateの記事を書いたり、YouTubeのTechLIVE by ITmediaチャンネルPower Automateの動画に出演したりもしています。好きなアーティストはZABADAKとSound Horizon。

担当記事一覧