如何远程管理 Hyper-V
折腾了半天,终于搞明白了。
在配置远程Hyper-V管理的时候,按照微软官方的Wiki[1]操作,你会有概率不能正常连接。这种问题在跨网关管理的情况下展现的更显著。 经过我的分析(其实有大鲸鱼的分析的成分)和重现测试,找到了一个稳定的方案,也算是对官方方案的改良。
在开始之前,我们假设:
- 服务端和客户端均为 Windows 10 或者以上操作系统。
- 服务器已经安装了Hyper-V.
- 客户端已经安装了Hyper-V管理器。
- 你拥有服务器和客户端的管理员权限。
- 服务器和客户端可以通过任何形式的不限制端口的局域网连接。
服务端配置
首先要检查服务端的用户是否是微软账号用户。如果是微软账号用户,则应该将微软账号用户转为本地用户或者新建一个有权限的用户。远程服务器无法连接微软账号用户。
在服务器上打开管理员身份的Powershell,然后运行这些命令:
Enable-PSRemoting # 开启PowerShell远程
Enable-WSManCredSSP -Role server # 为 CredSSP 和 WinRM 启用防火墙规则

如果服务器上有杀毒软件的话,可能会对这些敏感端口进行屏蔽。请对可信访问渠道进行放行。
客户端配置
然后是客户端配置,此时我们需要去获取服务器的计算机名称和局域网IP地址,然后将对应关系添加到C:\Windows\System32\drivers\etc\hosts

将你的网络修改为专用网络。

如果你在使用TUN虚拟网卡,则无法直接在设置中修改,请运行以下命令,将设备上的所有网卡设置为专用网络。
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
然后在客户端执行以下命令:
winrm quickconfig
如果你在运行上述名称出现0x80338012报错的问题,请尝试改用以下的命令:
winrm quickconfig -r:http://127.0.0.1:5985

然后配置以下命令:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "fqdn-of-hyper-v-host"
Enable-WSManCredSSP -Role client -DelegateComputer "fqdn-of-hyper-v-host"
winrm set winrm/config/client '@{TrustedHosts="fqdn-of-hyper-v-host"}'
在TrustHosts添加完成之后,我们还需要添加"允许使用仅限 NTLM 的服务器身份验证委派新凭据"。一共有两种方案,添加其中一个就可以,可以互相参考
使用组策略(推荐)
Win+R打开gpedit.msc,然后找到"计算机配置>管理模板>系统>凭据分配>允许分配新的凭据用于仅 NTLM 服务器身份验证",将其启用并把服务器添加进去。形式为wsman/fqdn-of-hyper-v-host.
在部分情况下,你有可能需要再添加一个
wsman/fqdn-of-hyper-v-host.local

使用注册表
如果你的电脑没有组策略,也可以使用注册表完成这个操作。
导航到注册表的HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\,然后检查左侧目录树是否存在AllowFreshCredentialsWhenNTLMOnly项(没有就新建一个),在这个项内新建一个字符串值,名称为序号1,数据为wsman/fqdn-of-hyper-v-host.
在部分情况下,你有可能需要再添加一个
wsman/fqdn-of-hyper-v-host.local

添加远程服务器
在配置客户端后,打开客户端的Hyper-V管理器,点击连接到服务器。

选择"连接到另一台服务器",输入服务器的计算机名称,勾选"作为另一个用户连接",用户名输入fqdn-of-hyper-v-host\username的格式,密码输入服务器对应用户的密码,然后点击连接。然后就可以管理远程服务器了。
致谢
- 感谢
deepseek-v4.1-flash和深度求索的赠金。 - 感谢QQ群友
@TransTypes404提供的服务器支持,此服务器用于纯净的复现测试环境的搭建。
通过 Hyper-V 管理器远程管理 Hyper-V 主机, learn.microsoft.com ↩︎