Выполните скрипт powershell удаленно на экземпляре Amazon EC2 с моего локального компьютера

У меня есть экземпляр Amazon EC2.

Используя powershell на моей локальной рабочей станции, я хочу иметь возможность удаленного доступа к своему экземпляру Amazon EC2 и выполнения некоторых команд.

Я нашел много статей в Интернете, но ни одна из них не работает, или я их неправильно понял (вероятно, последняя).

Некоторые я пытался
Удаленное управление экземплярами Windows EC2 с помощью Powershell
Администрирование экземпляра EC2 с помощью Windows Powershell
Включение - PSRemoting
Как запускать команды PowerShell на удаленных компьютерах

Я понимаю, что мне нужно:

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

3 ответа

Решение

Решение найдено здесь.

Отсутствующей ссылкой было (на экземпляре EC2) открыть брандмауэр Windows в режиме повышенной безопасности и отредактировать входящее правило.

Полные шаги:

EC2 Экземпляр
1) Откройте PowerShell от имени администратора
2) Введите enable-psremoting -force
3) Откройте брандмауэр Windows в режиме повышенной безопасности.
4) Входящие правила -> Найти удаленное управление Windows (Http-In) - есть 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)"

Я думаю, что отсутствие доступа к PowerShell через SSH было одной из самых больших ошибок проектирования, которые допустила MS. Даже спустя годы они слишком горды / слепы, чтобы принять это плохое решение.

Я предлагаю вам не бороться с WinRM и вместо этого использовать SSH-сервер на вашем компьютере с Windows. Вам будет полезен простой, стандартный, безопасный способ подключения к вашему серверу с любого устройства (я делаю удаленные сеансы PS со своего iPad).

Существует Cygwin с открытым исходным кодом и мой любимый проприетарный (с бесплатным предложением) PowershellServer

Вы будете благодарить меня, когда ваш сервер Windows будет хорошо играть с остальным миром.

ОБНОВЛЕНИЕ Я вернулся к этому старому потоку и хотел бы добавить еще один вариант - использование новой (ish) возможности команды запуска AWS Systems Manager. Это позволяет вам не иметь никакого административного порта, выставленного внешнему миру, поэтому нет необходимости возиться с брандмауэрами хоста / облака. Это также обеспечивает другие преимущества, такие как аудит, разрешения и т.д...

Другие вопросы по тегам