2014-02-20 66 views
8

執行在Amazon EC2實例遠程PowerShell腳本我有一個Amazon EC2實例。從我的本地計算機

我的本地工作站上使用PowerShell,我希望能夠遠程連接到我的Amazon EC2實例,並執行一些命令。

我發現有很多網上的文章,但沒有工作或我誤解了他們(可能是後者)。

一些我想是
Managing Windows EC2 Instances remotely with Powershell
Administering EC2 instance with Windows Powershell
Enabling- PSRemoting
How to Run PowerShell Commands on Remote Computers

我的理解是,我需要:

Amazon EC2 Dashboard > Network & Security > Security Groups > Add port 5985 

//Local & EC2 PowerShell(Administrator) 
enable-psremoting -force 

//Local PowerShell(Administrator) 
set-item wsman:\localhost\Client\TrustedHosts -value "*" -force 

$password = convertto-securestring -asplaintext -force -string myPassword 
$credential = new-object -typename system.management.automation.pscredential -argumentlist "myUsername", $password 
$session = new-pssession ec2-00-00-00-000.compute-1.amazonaws.com -credential $credential 
enter-pssession $session 

但我得到這個錯誤

new-pssession : [ec2-00-00-00-000.compute-1.amazonaws.com] Connecting to remote server 
ec2-00-00-00-000.compute-1.amazonaws.com 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:12 
+ $session = new-pssession ec2-00-00-00-000.compute-1.amazonaws.com -credential $c ... 
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin 
    gTransportException 
    + FullyQualifiedErrorId : WinRMOperationTimeout,PSSessionOpenFailed 
+0

您是否允許端口5985/5986本地?運行'winrm quickconfig'確認兩臺機器配置正確(儘管我認爲enable-psremoting應該已經處理了這一步)。 –

+0

@HyperAnthony我運行了'winrm quickconfig' - >我得到了'WinRM服務已經在這臺機器上運行了。 WinRM已經在此計算機上進行遠程管理。# –

+0

什麼是您的亞馬遜服務器的操作系統? – MDMoore313

回答

14

發現的解決方案here

缺少的鏈接是(在EC2實例上)打開具有高級安全性的Windows防火牆並編輯入站規則。

整步:

EC2實例
1)打開PowerShell的以管理員身份
2)輸入enable-psremoting -force
3)打開的Windows高級安全防火牆
4)入站規則 - >查找Windows遠程管理(Http-In) - th ERE是2,對於
5)做到這一點右擊 - >屬性 - >高級 - >檢查公共

本地
6)打開PowerShell的以管理員身份
7)輸入enable-psremoting -force
8)輸入以下內容:

$password = convertto-securestring -asplaintext -force -string MY_PASSWORD 
$credential = new-object -typename system.management.automation.pscredential -argumentlist "MY_USERNAME", $password 
$session = new-pssession MY_EC2_PUBLIC_IP -credential $credential 
enter-pssession $session 
Write-Host "Hello, World (from $env:COMPUTERNAME)" 
3

我認爲不通過SSH暴露的PowerShell是最大的設計錯誤MS做了一個。即使幾年後,他們也太驕傲/盲目地回覆那個糟糕的決定。

,我建議你不要使用WinRM戰鬥,而是你的Windows機器上使用SSH服務器。 您將從一個簡單,標準,安全的方式從任何設備連接到您的服務器(我正在從iPad進行遠程PS會話)中受益。

還有就是開源Cygwin和我最喜歡的專利(含免費發行)PowershellServer

你會感謝我,當你的Windows服務器將與世界其他地區發揮很好。

0

更新 我回到了這個舊線程,並想添加另一個選項 - 使用新的(ish)AWS Systems Manager run-command功能。 這允許你沒有暴露給外部世界的管理端口,所以不需要擺弄主機/雲端防火牆。 它還提供其他好處,如審計,權限等...