Настройка WinRM

Enable

Наиболее простой путь сконфигурировать удаленное управление это выполнить Enable-PSRemoting в оболочке powershell с правами администратора. При этом произойдет следущее: - запустится служба WinRM (если запущена перезапустится) - служба WinRM перейдет в состояние — автоматический запуск при старте - будет создан прослушиватель WinRM для HTTP трафика на порту 5985 для всех локальных IP адресов - будет создано правило файрвола для прослушивателя WinRM.

Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная», т.к. открывать порт на такой карточке не хорошо. Если у вас при конфигурировании вышла такая ошибка измените профиль этого сетевого адаптера командлетом Set-NetConnectionProfile и после этого запустите Enable-PSRemoting снова. Если вам нужна сетевая карточка с профилем «Публичная сеть» запустите Enable-PSRemoting с параметром -SkipNetworkProfileCheck в этом случае будут созданы правила файрвола только из локальной сети.

После этого нужно разрешить подключаться к удаленной машине с той машины с которой будет происходить управление. Сделано это в целях безопасности для того чтобы уменьшить риск взлома сессии удаленного управления или DNS с подстановкой себя вместо удаленной машины и предотвратить исполнение скриптов на машинах которые вы принудительно не разрешили.

Далее, надо предоставить права локальным пользователям для удаленного подключения по winrm:

winrm quickconfig

Trusted Hosts

Для проверки куда можно подключаться используем:

get-item wsman:\localhost\Client\TrustedHosts

Разрешаем подключаться ко всем:

set-item wsman:localhost\client\trustedhosts -value *
Если вы открываете доступ для всех указав * то WinRM будет подключаться ко ВСЕМ машинам без проверки.

Разрешаем подключаться только с определенного IP-адреса:

set-item wsman:localhost\client\trustedhosts -value "10.46.148.82"

Если компьютер узла WinRM находится во внешнем домене, выполните следующую команду, чтобы указать доверенные узлы.

c:\> winrm set winrm/config/client '@{TrustedHosts="узел1, узел2, узел3"}'

Listener

Убедиться, что прослушиватель работает, и проверить порты по умолчанию.

c:\> winrm e winrm/config/listener
Порты по умолчанию: 5985 для протокола HTTP и 5986 для протокола HTTPS.

Basic auth

Выполните следующую команду, чтобы проверить, разрешается ли обычная проверка подлинности на сервере

c:\> winrm get winrm/config/service

Проверить, разрешается ли обычная проверка подлинности на клиенте

c:\> winrm get winrm/config/client

Включить обычную проверку подлинности.

c:\> winrm set winrm/config/service/auth '@{Basic="true"}'

Allow Enencrypted

Разрешить передачу незашифрованных данных в службе WinRM.

c:\> winrm set winrm/config/service '@{AllowUnencrypted="true"}'

Если уровень защиты маркера привязки канала службы WinRM имеет значение strict, измените его на relaxed.

c:\> winrm set winrm/config/service/auth '@{CbtHardeningLevel="relaxed"}'

Проверить, разрешена ли незащищенная передача данных winrm с клиентского ПК на удаленный winrm-сервер.

ps> cd WSMan:\localhost\Client
ps> dir
Name                      Value
----                      -----
NetworkDelayms            5000
URLPrefix                 wsman
AllowUnencrypted          false
Auth
DefaultPorts
TrustedHosts
Видим, что запрещена - значит надо включить:
ps> set-item .\allowunencrypted $true
Еще два варианта:
set-item -force WSMan:\localhost\Service\AllowUnencrypted $true
winrm set winrm/config/client '@{AllowUnencrypted="true"}'
Чтобы разрешить digest-авторизацию, надо дать команду:
set-item -force WSMan:\localhost\Service\Auth\Digest $true

Контроль

Проверить, открыт ли порт 5985 на целевом сервере:

nc -z -w1 <IP or host name> 5985;echo $?
Если результат “0”, то открыт.

Проверить подключение к службе WinRM.

c:\> winrm identify -r:http://winrm_server:5985 -auth:basic -u:имя_пользователя -p:пароль -encoding:utf-8

Методы аутентификации

Столкнулся с проблемой аутентификации под доменной учеткой на контроллере домена.
Оказывается, метод Basic не работает под доменной УЗ.

Option Local Accounts Active Directory Accounts Credential Delegation HTTP Encryption
Basic Yes No No No
Certificate Yes No No No
Kerberos No Yes Yes Yes
NTLM Yes Yes No Yes
CredSSP Yes Yes Yes Yes

Настройка на terraform ВМ

Возможно, необходимо поставить пакет python3-winrm

sudo apt update
sudo apt -y install python3-winrm
sudo apt-get install python-dev libkrb5-dev
pip install Kerberos
## for credssp authentication
sudo apt install zlib1g-dev libffi-dev
pip3 install --upgrade setuptools
pip3 install --upgrade cryptography
pip3 install requests-credssp

Источники

  1. PowerShell Remoting — настройка и удаленное управление
  2. vRealize Orchestrator plugins
  3. Install WinRM on linux
  4. Работа с WinRM из andsible
  5. Отладка WinRM