2

我正尝试使用Windows 7客户端尝试远程控制附加弹性IP的Windows Server 2012 EC2实例。这是默认的配置,所以WinRM的服务应该是启动和运行,但良好的措施,我也在服务器上运行以下命令:Powershell远程处理:无法连接到Windows 2012 EC2实例

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force 
set-item WSMan:\localhost\Client\TrustedHosts -Value * -Force 
set-item WSMan:\localhost\Shell\MaxMemoryPerShellMB -Value 0 -Force 
Enable-PSRemoting 

在客户端,我再运行

$remoteUsername = "##########" 
$remotePassword = "#######" 
$remoteHostname = "00.000.000.00" #this is my elastic IP 
$securePassword = ConvertTo-SecureString -AsPlainText -Force $remotePassword 
$cred = New-Object System.Management.Automation.PSCredential $remoteUsername, $securePassword 

test-WSman -computername "54.252.195.14" 

但结果我得到的回复是

Connect-WSMan : The WinRM client cannot complete the operation within the time specified. Check if the machine name is valid and is reachable over the network and firewall exception for Windows Remote Management service is enabled. 
At ***************.ps1:14 char:14 
+ Connect-WSMan <<<< -Credential $cred $remoteHostname 
    + CategoryInfo   : InvalidOperation: (*********) [Connect-WSMan], InvalidOperationException 
    + FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.ConnectWSManCommand 

然后我试图运行在客户端上下面的代码为好,但是这并没有帮助或者:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force 
set-item WSMan:\localhost\Client\TrustedHosts -Value * -Force 
set-item WSMan:\localhost\Shell\MaxMemoryPerShellMB -Value 0 -Force 
Enable-PSRemoting 

关于如何让Windows AMI在EC2上运行和自动化,没有太多的信息,任何人都可以帮我找出错误吗?客户端和服务器不在同一个域中,但我认为更改受信任主机可以使远程连接成为可能吗?

UPDATE

低于以下巴拉克的意见后,我能够建立一个从服务器的Telnet连接到其自身正确的端口上,但只有当使用私有IP,而不是使用弹性IP时。

安全规则如下:

-1 ICMP 0.0.0.0/0
22 TCP 0.0.0.0/0
443 TCP 0.0.0.0/0
3389 TCP 0.0.0.0/0
5985 TCP 0.0.0.0/0
5986 TCP 0.0.0.0/0
8888 TCP 0.0.0.0/0

+0

我按照这里的说明,如果这是任何帮助:http://stackoverflow.com/questions/10237083/how-to-programmatically-remotely-execute-a-program-in-ec2-windows-instance/13284313 – analystic

+0

您确定WinRM端口(5985)在您的EC2安全组和Windows防火墙规则中是否已打开? –

+0

我确定它是在EC2安全组上打开的,因为它是5986(对于HTTPS)。我已经在服务器上运行了Enable-PSRemoting命令,并且我记得它说明已经创建了防火墙异常。即使我完全禁用了我的客户端上的所有防火墙,我仍然遇到同样的问题。 – analystic

回答

3

首先,你需要理清,如果可以建立连接到远程计算机。最简单的就是尝试使用以下命令从Windows命令提示符:

telnet <ip> 5985 

如果没有安装Telnet客户端,通过添加它添加/删除Windows组件。 如果连接不可行,您将收到错误消息。这是最可能的错误。可能的原因:

  1. 客户端防火墙(本地或网络)防止连接
  2. EC2安全组的配置
  3. 服务器的防火墙规则。

由于您可以通过远程桌面访问远程计算机,因此请在服务器上运行相同的命令,以确保WinRM服务实际上正在工作并侦听默认端口。

如果连接是可以从客户端计算机,打开服务器上的事件查看器,请访问: “应用程序和服务日志” - >微软 - >窗口 - >“Windows远程管理” - >运行 和在事件日志中寻找错误。

+0

我无法从客户端telnet,但我可以从主机。但是,我无法通过我分配的弹性IP从服务器Telnet到本身,因此无法公开访问 - 您是否知道为什么会这样? – analystic

+0

尝试彻底关闭Windows防火墙。再次检查安全组配置。尝试telnet到端口3389(RDP)并比较结果。检查公共IP(不是弹性IP)。 – Barak

+0

直到现在,我尝试了所有这些 - 我可以远程或本地telnet到RDP端口,但除非使用私有IP,否则不能在PSremoting端口5985上。由于某些原因,我只能使用专用IP远程登录到PSRemoting端口,即使在本地也是如此。 我开始放弃对此的希望 - 我不明白如何才能如此困难,除非我设置了我的安全组不正确的地方?! – analystic

0

我也一直在反对这个问题。我认为它与通过使用localhost的set-item wsman:\ localhost \ listener \ listener * \ port -value 5985命令启用PowerShell侦听有关。本地主机是内部IP地址,而不是公共IP。我不知道如何让两个IP映射到对方。