首先测试您可以让 Powershell 从笔记本电脑或其他机器在您的目标上远程执行。
使用下面的 Powershell 脚本测试您的 WinRM 连接和自签名证书,并注意测试 Powershell 脚本中的 -SkipCNCheck -SkipCACheck PSSession 选项。如果您使用的是自签名证书,这些选项是必不可少的,并且您还需要在“在目标机器上运行 Powershell”模板(版本 3)的“会话选项”中提供相同的开关。
注意:我使用本地主机 IP 只是为了避免意外使用真实 IP
$password = ConvertTo-SecureString 'password goes here' -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ('yourDomain\yourDomainUserId', $password)
$sessionOptions = New-PSSessionOption -SkipCNCheck -SkipCACheck
$remote_session = new-pssession -computername 127.0.0.1 -UseSSL -credential $credential -SessionOption $sessionOptions
Invoke-Command -session $remote_session -ScriptBlock { Get-Culture }
还请确保您已设置 WinRM 侦听器以侦听目标计算机的 外部 IP,并向该侦听器注册自签名证书指纹。使用 WinRM 命令执行此操作(使用您的实际外部公共 IP),例如:
winrm create winrm/config/Listener?Address=IP:127.0.0.1+Transport=HTTPS @{Hostname="some.hostname.outhere.net"; CertificateThumbprint="[YOUR CERT THUMBPRINT]ABCDEF0247283798137030174027"}
另外请注意,在“在目标机器上运行 Powershell”模板的“机器”字段中,使用机器外部公共 IP 代替 FQDN 或 DNS 名称。如果您使用的是自签名证书,则必须这样做。
一旦您获得测试 Powershell 脚本以使用远程计算机上的自签名证书进行连接和握手,您几乎可以保证“在目标计算机上运行 Powershell”也能正常工作。
其他需要检查的事项:
如果一切都失败了,请在您的目标机器上下载并安装 Wireshark 并设置一个 ip 过滤器以仅侦听客户端服务器的 ip 并分析流量,大多数情况下这会提示您什么被拒绝和为什么。
希望这会有所帮助。