我在使用 Windows 7 客户端的 powershell 管理 Windows 2k8 Server SP2 实例(托管在 EC2 上)时遇到了麻烦。当我尝试运行:
Invoke-Command {Get-Service} -ComputerName ec2-184-73-111-34.compute-1.amazonaws.com
我收到以下错误:
连接到远程服务器失败,并显示以下错误消息:WinRM 客户端无法在指定的时间内完成操作。请检查计算机名称是否有效且是否可通过网络访问,以及是否启用了 Windows 远程管理服务的防火墙例外。有关更多信息,请参阅 about_Remote_Troubleshooting 帮助主题。
在服务器上我已经:(1)使用 RDP 连接(服务器可访问),并且(2)运行 Enable-PSRemoting
在我的客户端上,我已经:(1)将 EC2 实例添加到 TrustedHosts
我也尝试在完全禁用 Windows 防火墙的服务器上运行上述命令,但这也没有解决问题。我还验证了 Windows 远程管理存在防火墙例外。
答案1
在 EC2 上,您需要打开端口 5985(安全组上的默认 WinRM 远程端口),以便您可以从 IP 地址连接到实例。
在云中的实例上,执行以下操作:
winrm quickconfig -quiet
在您的工作站上:
set-item wsman:\localhost\Client\TrustedHosts -value "*" -force
Invoke-Command {Get-Service} -ComputerName <hostname> -Credential administrator
这应该可以让你行动起来。
答案2
这两台机器必须位于同一个域中。我不知道您是如何做到这一点的。“在我的客户端上,我已经:(1) 将 EC2 实例添加到 TrustedHosts。”这还不够。您需要将 EC2 服务器添加到您的地面域,或者让 EC2 服务器成为该 Windows7 客户端的域控制器。
从地面“管理”该 EC2 服务器的另一种方法是利用 Microsoft 的“SysInternals”实用程序集合中的 PsExec.exe。您会在他们的“PsTools”免费工具包中找到这个精华。因此,在适合您的 Microsoft 下载网站上,搜索 PsTools,PsExec 就在那里。
PsExec 让您可以远程控制域外的机器。
答案3
仅仅因为 RDP 已获得授权并不意味着其他服务也已获得授权。您必须使用 ec2-authorize 逐个端口允许访问目标系统上的端口。powershell 使用哪个端口与目标系统通信?您是否授权了该端口?