PowerShell remoting over HTTPS. Удаленное управление компьютером Windows без домена.

Это небольшое пошаговое руководство, в котором показано, как настроить порт HTTPS и самоподписанный сертификат SSL при использовании удаленного подключения Powershell. 

Для того, что бы мы смогли удаленно подключиться к компьютеру, необходимо создать самоподписанный сертификат. Раньше для этого приходилось использовать отдельную утилиту из SDK под названием MakeCert, но в последних версиях операционной системы Windows данную процедуру можно выполнить с помощью того же Powershell.

Хорошим тоном считается создание сертификатов по именам устройств, получить имя в переменную можно вот так:

$hostName = $env:COMPUTERNAME

но мы будем делать сертификат связанный с IP адресом компьютера, так как в нашей сети нет ни домена, ни DNS сервера способного обработать данный запрос.

$serverCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName IP-Address-PC

Мы успешно создали сертификат, теперь необходимо его экспортировать.

Export-Certificate -Cert $serverCert -FilePath c:\cert\PsRemoting-Cert-my-pc.cer

Проверим появился ли сертификат в нашей папке:

Get-ChildItem c:\Cert\PsRemoting-Cert-my-pc-my-pc.cer

Запустим службу WinRM:

Enable-PSRemoting -Force

TCP порт по умолчанию для Powershell Remoting HTTP — 5985 и HTTPS — 5986. По умолчанию наш служба слушает порт 5985, то есть HTTP, нам же нужно будет это изменить.

Get-ChildItem wsman:\localhost\Listener

Удаляем запись с ключом HTTP и добавляем HTTPS.

Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -eq 'Transport=HTTP' | Remove-Item -Recurse

Проверяем, что запись удалена:

Get-ChildItem wsman:\localhost\Listener

Создаем новую запись и привязываем сертификат:

New-Item -Path WSMan:\localhost\Listener\ -Transport HTTPS -Address * -CertificateThumbPrint $serverCert.Thumbprint -Force

Создадим правило для файрвола:

New-NetFirewallRule -Displayname 'WinRM - Powershell remoting HTTPS-In' -Name 'WinRM - Powershell remoting HTTPS-In' -Profile Any -LocalPort 5986 -Protocol TCP

Теперь перезагрузим службу WinRM.

Restart-Service WinRM

Настройка сервера на данном этапе завершена, дальше необходимо добавить сертификат на машину с которой хотим подключаться.

Import-Certificate -FilePath c:\Cert\PsRemoting-Cert.cer -CertStoreLocation Cert:\LocalMachine\root\

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

Enter-PSSession -Computername 192.168.22.19 -UseSSL -Credential admin

Удачных экспериментов!!!!

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *