在工作组环境中远程管理Hyper-V
背景
几个周末前,我决定(因为我显然是受虐狂)对运行家庭实验室的ESXi免费版本感到厌倦,并决定尝试使用Microsoft的Hyper-V Server 2016。
我喜欢这个主意,这是重量轻,使用PowerShell访问,并有大量的凉爽 Github上项目是由部署测试AD域自动。
我在Windows笔记本电脑上玩过Hyper-V,也喜欢GUI Hyper-V管理器。如果我可以使用它和PowerShell远程管理我的实验室,我会很高兴。
从ISO安装Hyper-V服务器很容易,但是我几乎不知道我会花几天时间尝试连接到它。
我按照这些文档中的步骤进行操作,但仍然无法正常工作:
- https://docs.microsoft.com/zh-CN/windows-server/virtualization/hyper-v/manage/remotely-manage-hyper-v-hosts
- http://pc-addicts.com/remotely-manage-hyper-v-server-2012-core/
我的问题的症结在于,Hyper-V Server实际上打算在AD域环境中运行。通过Powershell或Hyper-V Manager进行远程管理,如果AD支持身份验证和授权,我相信它可以无缝地工作。
我的公寓中没有设置AD域,也没有意愿建立DC并管理用于个人使用的域。因此,我着手尝试将Hyper-V配置为与WORKGROUP配合使用。我想要做的是能够从主Windows工作站远程连接并管理服务器。我还想对我的主工作站进行最少的调整(即不要做任何公然不安全的事情,例如禁用防火墙,信任通配符等)。
以下是我发现可以使远程连接正常工作的命令。
配置服务器
初始安装后,设置管理员密码,将显示以下最低要求的屏幕:
这里需要配置一些东西。
- 在“配置远程管理”中,确保启用了“远程管理”并更改设置以允许对服务器执行ping操作
- 启用远程桌面,以便您可以通过RDP远程管理服务器
- 配置名称。我选择了hyperv-server。这需要重新启动。
我还在hyperv-server.home.local本地DNS服务器中创建了一个主机条目,因此可以通过主机名访问它。手动编辑etc\hosts文件也可以。
完成这些设置后,我能够按主机名并将凭据用于RDP到框中HYPERV-SERVER\Administrator。
服务器PowerShell配置
配置菜单的后面是命令提示符,可让您进入PowerShell。在这里,您需要配置服务器以允许PS-Remoting并允许对服务器进行CredSSP身份验证。使用以下命令:
Enable-PSRemoting
Enable-WSManCredSSP -Role server
一旦启用,就完成了服务器配置。现在是使我的客户与其进行交流的棘手部分。
客户端配置
我将通过Windows 10笔记本电脑远程管理Hyper-V服务器。第一件事是确保将连接配置文件设置为“专用”,以便Windows防火墙允许流量(即,它将无法通过公共网络运行)
Get-NetAdapter|Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceAlias Ethernet -NetworkCategory Private
下一步是通过将服务器添加为WS-Management Protocol的受信任主机来配置可以连接到服务器的客户端。
要添加条目,必须在客户端上启用WinRM。我不想在笔记本电脑上启用WinRM,但是幸运的是,我发现在添加条目后停止服务是可行的。要添加条目:
$ Start-Service -Name winrm
$ Set-Item WSMan:\localhost\Client\TrustedHosts -Value "hyperv-server.home.local
$ Stop-Service -Name winrm
这应该使用IP地址而不是主机名,但是我没有测试。青年汽车
现在测试一下,您可以通过测试来验证身份并从工作站远程运行命令Invoke-Command:
Invoke-Command {whoami} -ComputerName hyperv-server.home.local -Credential HYPERV-SERVER\Administrator
它将提示您输入本地管理员密码,然后远程执行hostname命令:
如果可行,您现在可以在客户端和服务器之间安全地通信,并最终可以开始远程管理Hyper-V。
配置Hyper-V管理器
如果尚未安装,请确保Hyper-V Management Tools在Windows功能中启用以获取Hyper-V Manager GUI。您不必实际启用Hyper-V平台(因为我是在本地运行Virtualbox的,所以不需要。)
打开Hyper-V管理器,右键单击并选择“连接到服务器”。输入Hyper-V服务器的IP地址或主机名,然后选择“以其他用户身份连接”,输入本地管理员凭据
现在...您会认为这完全可以工作。特别是因为我们已经证明WinRM和PS-Remoting可以正常工作。但点击“确定”,就会弹出此错误:
我不知道为什么这失败了。直到我找到解决方法,这让我无所适从。
授权解决方法
要解决授权错误,您必须使用手动将Hyper-V Server凭据添加到内存中cmdkey。退出Hyper-V服务器,并在客户端的命令提示符下输入以下内容:
cmdkey /add:HYPERV-SERVER /user:Administrator /pass:<REDACTED>
现在,重新打开Hyper-V Server并再次连接到远程服务器,但是不必费心指定其他用户,因为我们所需的凭据已经在内存中:
终于成功了!您可以连接并远程管理服务器:
只要凭据保留在内存中,就可以远程管理服务器。另一个可能的解决方法是使用runas正确的本地帐户启动Hyper-V Manager :
runas /user:HYPERV-SERVER\Administrator /netonly "mmc virtmgmt.msc"
您可以创建一个快捷方式来运行它,并且可以使用。
tl; dr
在Hyper-V服务器上
- 启用远程管理
- 启用远程桌面
- 设置计算机名
- 启用WSMan和PS-Remoting:
Enable-PSRemoting
Enable-WSManCredSSP -Role server
关于管理客户
- 为Hyper-V服务器配置主机或DNS条目
- 确保网络配置文件为“私人”:
Set-NetConnectionProfile -InterfaceAlias Ethernet -NetworkCategory Private
- 临时启动WinRM并将Hyper-V服务器添加为可信主机:
Start-Service -Name winrm
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "hyperv-server.home.local"
Stop-Service -Name winrm
- 在Windows功能中启用Hyper-V管理工具
- 使用cmdkey添加Hyper-V管理员凭据:
cmdkey /add:HYPERV-SERVER /user:Administrator /pass:<REDACTED>
- 启动Hyper-V管理器并连接到服务器(不指定用户)
- 或者,通过以下命令启动Hyper-V Manager runas:
runas /user:HYPERV-SERVER\Administrator /netonly "mmc virtmgmt.msc"
摘要
经过大量的摸索,这是我发现的最低限度工作配置,可以在非域环境中远程管理Hyper-V服务器。
我还没有100%确定为什么的Hyper-V管理器不工作,提供的凭证和cmdkey或runas解决方法是必要的。如果有人能对此有所启示,我将不胜感激!
希望这可以帮助某人
-ropnop