Powershell Выполнение удаленных команд. Статья 2. Настройка WinRM с использованием HTTPS

Windows Remote Management

WinRM и WinRS являются нововведением в Windows Vista, Windows Server 2003 R2, Windows Server 2008 (и Server 2008 Core). Это новые мощные средства командной строки, предлагающие системным администраторам улучшенные возможности удаленного управления и удаленного выполнения программ на машинах с Windows. Однако, их нужно сперва включить.

Привет. Продолжаем говорить о Powershell и удалённом управлении Windows. Первыя статья была  про  invoke-command.

В ряде случаев вам может потребоваться создать надежный канал для безопасной пересылки команд между клиентом и сервером. Для этого можно использовать HTTPS.

Однако, для создания listener’а с поддержкой HTTPS вам потребуется цифровой сертификат, который можно запросить у доверенного Центра Сертификации, либо воспользоваться различными утилитами по созданию самоподписанных (самозаверенных) сертификатов, например, Makecert, входящей в состав Windows SDK . Скачать Makecert отдельно можно отсюда(работает, но на ваш страх и раск, лучше SDK от MS качать!)

Для создания самоподписанного серитификата выполните следующую команду:

makecert -a sha1 -r -pe -n «CN=<Имя сервера>» -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp «Microsoft RSA SChannel Cryptographic Provider» -sy 12 -m 12 <ФАЙЛ_СЕРТИФИКАТА>.cer

Где:

<ИМЯ_СЕРВЕРА> соответствует имени, которое будет использовать клиент при подключении к серверу;

<ФАЙЛ_СЕРТИФИКАТА> — путь к файлу, куда будет сохранен сертификат с открытым ключем.

2. Сертификат с закрытым ключем будет создан и помещен в хранилище сертификатов локального компьютера.

Добавьте его к доверенным корневым сертификатам:

certutil -addstore root <ФАЙЛ_СЕРТИФИКАТА>

3. Теперь просмотрите хранилище сертификатов, найдите там требуемый сертификат и запишите его Thumbprint (Cert Hash):

certutil -store my

Наконец, можно приступать к созданию HTTPS listener. Введите команду:

winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=»<ИХМЯ_УЗЛА>»;CertificateThumbprint=»<ХЭШ_СЕРТИФИКАТА>»;Port=»<ПОРТ>»}

Где:

<ИМЯ_УЗЛА> — имя, которое указывается при обращении к серверу <ХЭШ_СЕРТИФИКАТА> — Thumbprint, который вы узнали на предыдущем шаге (без пробелов). <ПОРТ> — порт, на который будет подключаться клиент (TCP 443 по-умолчанию).

5. Если на сервере включен брандмауэр Windows, не забудьте добавить правило:

netsh advfirewall firewall add rule name=»allow WinRM on 443″ protocol=TCP dir=in localport=443 action=allow

6. При использовании самоподписанных сертификатов, вам придется добавить его к доверенным корневым сертификатам на клиенте.

Скопировать файл созданный в 1-м этапе на клиента и проинсталировать сертификат в корневой список доверенных сертификатов.

После выполнения всех шагов, вы, наконец, получите возможность удаленного выполнения команд:

Пример подключения:

winrs -r:https://<Имя сервере> -U:<Имя пользователя> -P:<Мой пароль> hostname

<Имя Сервере> должно совпадать с тем, что указали в 1-м шаге (CN=»имя сервра»), при создании сертификата

По теме:
WS-Management или WinRM

Как вам могут помочь WinRM и WinRS в Windows Server 2008?

Об авторе Alex

Работаю Администратором. В основном Windows. Специализируюсь на Hyper-V
Запись опубликована в рубрике Powershell, Администрирование. Добавьте в закладки постоянную ссылку.

1 комментарий: Powershell Выполнение удаленных команд. Статья 2. Настройка WinRM с использованием HTTPS

  1. Alexander говорит:

    спасибо большое! статья очень помогла.

Добавить комментарий