有人能帮助解决以下问题吗?我正尝试从公司域中的服务器 ( SVR_A
) 远程访问不属于域的服务器 ( )。SRV_B
- 的IP地址范围
SRV_B
是10.0.X.X
。 - 的IP地址
SRV_A
是172.23.1.2
。
我可以 ping 每一台服务器(SVR_A
到SVR_B
和反之亦然)。WinRM 在两台服务器上运行,并且Enable-PSRemoting
在两种情况下都配置正确。SRV_B
还将 添加SRV_A
到其TrustedHosts
列表中。
get-item WSMan:\localhost\Client\TrustedHosts
返回
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client
pe Name SourceOfValue Value
-- ---- ------------- -----
stem.String TrustedHosts SVR_A
这SRV_A
是我们 DMZ 中的 Web 服务器之一,因此还有其他不属于域的 Web 服务器。我可以使用Invoke-Command
或远程访问 Web 服务器Enter-PSSession
,SRV_B
但不是来自公司域内的应用服务器( )。
我收到这个错误
[SRV_A] Connecting to remote server SRV_A failed with the following error message : The client
cannot connect to the destination specified in the request. Verify that the service on the destination is running and
is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination,
most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to
analyze and configure the WinRM service: "winrm quickconfig". For more information, see the
about_Remote_Troubleshooting Help topic.
+ CategoryInfo : OpenError: (SRV_A:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : CannotConnect,PSSessionStateBroken
两端的 Powershell 版本
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.19170
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
结果winrm e winrm/config/listener
SRV_A
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 127.0.0.1, 172.23.1.2, ::1, fe80::5efe:172.23.1.2%13
答案1
1. 根据winrm e winrm/config/listener
服务器上的输出A
...
- 它正在使用端口
5985
- 并使用 IP 地址进行监听
172.23.1.2
2. 检查所有防火墙规则或路由器配置并确保...
- 服务器
10.0.x.x
流量B
可以到达172.23.1.2
IP 地址(和子网)到服务器A
5989
尤其是港口
3. 此外...
在服务器上运行
Enable-PSRemoting -Force;
提升权限的 PowerShell 管理员A
再次考虑仅信任服务器的 IP 地址或服务器上的
B
整个子网10.0.x.x
A
使用有效的服务器
A
凭据,但使用远程 PowerShell 命令在服务器上执行它B
,只要允许网络流量和端口访问,它就可以与不受信任的域一起使用-
在服务器 B 上执行此操作
Invoke-Command -ComputerName "ServerA" -ScriptBlock { <Remote Command...> } -Credential Get-Credential "SrvA\UserNameHere"
-
4. 协助排除故障...
- 运行
Enter-PSSession -ComputerName "ServerA" -Credential Get-Credential "SrvA\UserNameHere"
以确认您可以A
从服务器访问服务器B
5. 最后,但同样重要的是,为了更加彻底......
- 考虑将你的 Server 2012 R2 更新至PowerShell 5.1为了更加彻底