如何与 Azure 虚拟机的公共 IP 地址建立远程 PowerShell 会话?

如何与 Azure 虚拟机的公共 IP 地址建立远程 PowerShell 会话?

我正在尝试通过其公共 IP 地址与部署在 Azure 上的 Windows Server 2016 建立远程 PowerShell 会话(最初我尝试配置服务器管理工​​具网关,但即使在两个相同的、新部署的服务器之间我也无法让它工作)。

我有两台服务器(目标10.0.0.4和源10.0.0.5)连接到同一个子网,并且我可以在本地网络上从源连接到目标(10.0.0.0):

PS C:\> Set-Item WSMan:\localhost\Client\TrustedHosts -Value "10.0.0.4" -Concatenate -Force
PS C:\> Enter-PSSession -ComputerName 10.0.0.4 -Credential (Get-Credential)

cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
[10.0.0.4]: PS C:\Users\techraf\Documents> exit

但是,如果我尝试使用目标的公共 IP 地址,连接就会被拒绝:

PS C:\> Set-Item WSMan:\localhost\Client\TrustedHosts -Value "13.85.78.151" -Concatenate -Force
PS C:\> Enter-PSSession -ComputerName 13.85.78.151 -Credential (Get-Credential)

cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
Enter-PSSession : Connecting to remote server 13.85.78.151 failed with the following error message : WinRM cannot
complete the operation. Verify that the specified computer name is valid, that the computer is accessible over the
network, and that a firewall exception for the WinRM service is enabled and allows access from this computer. By
default, the WinRM firewall exception for public profiles limits access to remote computers within the same local
subnet. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:1
+ Enter-PSSession -ComputerName 13.85.78.151 -Credential (Get-Credentia ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (13.85.78.151:String) [Enter-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

在尝试之前我已经:

  • 在 NSG 中为 TCP 端口 5985 和 5986(针对整个互联网)创建了入站规则
  • 禁用(完全禁用,仅用于测试)目标系统上的 Windows 防火墙

nmap我还从源机器检查了目标端口,虽然 5985 是打开的,但 5986 是关闭的(包括10.0.0.0网络连接)。

还需要什么才能使其工作吗?

答案1

您部署虚拟机时使用的是哪种模式?如果是 ASM (Azure 服务管理),请尝试将两台虚拟机部署在不同的云服务中。

我已经在 ARM(Azure 资源管理器)中测试了这一点,当我仅打开 TCP 端口 5985 时,WinRM 就可以工作。

•禁用(完全禁用,仅用于测试)目标系统上的 Windows 防火墙

您是如何禁用防火墙的?请不要停止服务,这可能会导致防火墙出现意外行为。我们需要使用 GUI 关闭防火墙。

我还从源机器使用 nmap 检查了目标端口,5985 处于打开状态,而 5986 处于关闭状态(包括 10.0.0.0 网络上的连接)。

您需要对目标服务器进行网络捕获来找到此通信的详细过程。

  1. 如果目标服务器没有收到来自客户端的请求,那么 NSG 或某些外部防火墙会阻止此连接。
  2. 如果目标服务器收到请求但没有返回响应,那么我们需要通过检查事件日志来检查 WinRM 服务是否收到了请求。
  3. 如果事件日志中没有记录任何内容,则意味着目标服务器上的某些东西阻止了连接。否则,WinRM 服务应该记录丢弃请求的原因。

相关内容