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
спасибо большое! статья очень помогла.