サーバー上でのリモートHyper-V管理の設定は、特にCoreエディションやGUIのないHyper-V Serverの場合、少々難しい場合があります。接続や資格情報に問題が生じたり、単純な設定ミスでアクセスがブロックされたりすることもあります。ここでの目標は、サーバーに直接アクセスすることなく、手軽なWindows 10ワークステーションからVMを管理できるように、すべてがスムーズに連携できるようにすることです。複数のHyper-Vホストをより効率的に管理したい場合や、日常的な管理にPowerShellよりもGUIを使いたい場合に便利です。
非ドメイン環境での Hyper-V リモート管理を修正する方法
Hyper-Vホストでリモート管理を有効にする
これは、Windows Server CoreやHyper-V Serverなど、Hyper-Vを実行しているもののGUIがないサーバーをご利用の場合に当てはまります。Windowsは当然のことながら、必要以上に操作を複雑にしています。sconfig.cmdサーバーのコンソールで実行し、「4 – リモート管理」に移動して有効にしてください。インターネット接続を確認し、リモート管理をブロックするファイアウォールルールの一部を無効にするため、手動で行う作業はほとんどありません。
リモートセッション用に WinRM と CredSSP を構成する
この手順は非常に重要です。一部の設定では、CredSSP認証がデフォルトで無効になっているため、「CredSSP認証は現在無効です」などのエラーが表示され、接続が停止する可能性があるためです。PowerShellを管理者として開き、次のコマンドを実行します。
Enable-PSRemoting Enable-WSManCredSSP -Role server
これにより、必要なWinRMサービスが設定され、Hyper-Vコンソールとの安全なリモート接続に必要なCredSSP認証が有効になります。一部のマシンでは、適切なファイアウォールポートも自動的に開かれる場合がありますが、念のため再度ご確認ください。
デフォルトのWinRMポート(TCP 5985)にアクセスできるかどうかを確認します
ネットワークの問題が隠れた原因となることがよくあります。以下のコマンドを使って、クライアントマシンがポート5985でサーバーを認識できるかどうかをテストしてください。
Test-NetConnection -ComputerName 192.168.21.30 -Port 5985
緑色であれば問題ありません。緑色でない場合は、ファイアウォールのルールまたはネットワーク設定を確認してください。場合によっては、Windows Defenderファイアウォールでポート5985を手動で開いたり、サブネットブロックによってブロックされていないか確認する必要があります。
クライアント上でホスト名解決と信頼できるホストを設定する
IPアドレスではなくホスト名で接続したいということですね?クライアントマシンで、にあるhostsC:\Windows\System32\drivers\etc\hostsファイルを編集してください。PowerShellでも可能です。
Add-Content -Path "C:\Windows\System32\drivers\etc\hosts" -Value "192.168.21.30 hv19"
または、管理者としてメモ帳を開き、この行を追加してください。これにより、PCは「hv19」が指しているホストを認識します。次に、PowerShellにそのホストを信頼するように指示します。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "hv19"
次に、簡単にログインできるように管理者の資格情報を保存します。そうすれば、接続しようとしたときにクライアントからエラーが返されることはありません。
cmdkey /add:hv19 /user:Administrator /pass:HypVpaSS22
気分が高揚したり、パスワードを保存したくない場合は、次の方法で資格情報を使用して Hyper-V マネージャーを明示的に実行できます。
runas /user:hv19\Administrator /netonly "mmc virtmgmt.msc"
ネットワークプロファイルを調整し、クライアントでCredSSPを有効にする
なんと、Windowsがネットワークを「パブリック」ネットワークと認識すると、リモート管理がスムーズに動作しない可能性があります。以下の点を確認し、変更してください。
Get-NetConnectionProfile|select InterfaceAlias, NetworkCategory
「パブリック」と表示されている場合は、「プライベート」に切り替えます(信頼できるネットワークではより安全ですが、リモート処理には必要です)。
Set-NetConnectionProfile -InterfaceAlias "EthernetLAN2" -NetworkCategory Private
最後に、クライアントで CredSSP を有効にし、資格情報をサーバーに委任し、プロンプトが表示されたら「y」で確定します。
Enable-WSManCredSSP -Role client -DelegateComputer "hv19"
これにより、ワークステーションからサーバーに安全に資格情報を渡せるようになります。次に、ローカルグループポリシーを調整してNTLM委任を許可します。
- 走る
gpedit.msc - コンピューターの構成 > 管理用テンプレート > システム > 資格情報の委任に移動します。
- NTLMのみのサーバー認証で新しい資格情報の委任を許可するを有効にする
- 「表示」をクリックして、次のようなエントリを追加します
wsman/hv19。wsman/hv19.local - エディターを閉じて実行し、
gpupdate /force変更を適用します
Hyper-V マネージャーとの接続
次に、Hyper-Vマネージャーコンソール(virtmgmt.msc)を開き、「サーバーに接続」を選択します。ホスト名またはIPアドレス(この例では「hv19」)を入力します。すべてがうまくいけば、VMの一覧が表示されます。接続には数秒かかる場合があり、時には奇妙な動作をすることもあります。例えば、一度失敗しても、管理マシンを再起動すると接続できるようになるなどです。Windows管理の奇妙な仕組みへようこそ。
一度接続してしまえば、VMの管理(作成、インポート、エクスポート)は、PowerShellコマンドを一日中いじくり回すよりもはるかに簡単になります。ただし、問題が発生した場合は、ネットワークと認証情報の設定を必ず再確認してください。