问题不在于主机文件或构建代理,而在于服务器证书TARGET机器。对我来说,我使用 VSTS 部署到Azure VM当我遇到这个问题时,但解决方案仍然相同onsite机器也是如此。
对于 Azure VM 部署,当您创建没有配置的 VM 时会出现此问题DNS 名称标签为您的公共 IP,然后添加一个(例如example.centralus.cloudapp.azure.com
)。如果您更改 DNS 名称标签,也可能会发生这种情况。
Issue
您需要检查如何连接到机器。之前,使用 Azure VM IP 地址运行得很好。现在,VSTS开始尝试使用example.centralus.cloudapp.azure.com:5986
因为我最近添加了 DNS 名称标签。我们将其称为目标机器地址.
On the target计算机,以管理员身份打开 PowerShell 或命令提示符,然后输入命令 'winrm e winrm/config/listener
'。它应该返回两个侦听器,其中一个用于HTTP另一个用于HTTPS(如果未列出 HTTPS,请不要担心,我们稍后会添加)。请特别注意Hostname对于 HTTPS 侦听器。如果这不匹配目标机器地址我们之前发现,这就是导致错误的原因。这证书指纹对应于机器上的服务器证书。
要查看这些证书,请从 PowerShell 或命令提示符中键入mmc
并按回车键。转到“文件”>“添加/删除管理单元...”。选择“证书”,然后单击Add。在对话框中,选择“计算机帐户”,然后单击Next then Finish。在“证书”>“个人”>“证书”下,您将看到 WinRM 配置正在使用的证书。这里考虑的是自签名的证书测试证书因为它们没有得到官方证书颁发机构的支持。我们需要创建一个代表目标机器地址你想用。
您还可以在 IIS 中的“”下查看证书服务器证书'.
Solution
确保您知道要使用哪个地址来连接到计算机。这是目标机器地址.
On the target计算机,以管理员身份打开 PowerShell。输入以下命令。
New-SelfSignedCertificate -DnsName WhateverTargetMachineAddressYouNeed -CertStoreLocation Cert:\LocalMachine\My
这将为您的目标地址创建一个新的服务器证书,有效期为一年。
接下来,我们要为 HTTPS 传输类型重新创建 WinRM 侦听器以使用新证书。打开IIS看看服务器证书为您的网络服务器。您应该会看到刚刚创建的那个。右键单击它并选择“查看...”。在里面Details选项卡,复制指纹为了证书。如果您愿意,也可以从 mmc 执行此操作。
在 PowerShell 中一次输入以下命令。
winrm delete winrm/config/listener?Address=*+Transport=HTTPS
Then:
winrm create winrm/config/listener?Address=*+Transport=HTTPS '@{Hostname="WhateverTargetMachineAddressYouNeed";CertificateThumbprint="TheThumbprintYouCopied";port="5986"}'
Done!如果您输入winrm e winrm/config/listener
在 PowerShell 中,您现在应该看到使用新证书的 HTTPS 传输。
如果您的发布定义或部署脚本中的任何内容使用旧地址(对我来说,是 Azure VM IP 地址),请务必将其更新为使用新地址目标机器地址(对于我来说,Azure VM DNS 名称标签)带有端口号。在 VSTS 中,请确保选中使用“测试证书'。祝你好运!
欲了解更多信息,您可以访问这里:
http://www.dotnetcurry.com/windows-azure/1289/configure-winrm-execute-powershell-remote-azure-with-arm http://www.dotnetcurry.com/windows-azure/1289/configure-winrm-execute-powershell-remote-azure-with-arm