1 |
Это небольшое пошаговое руководство, в котором показано, как настроить порт HTTPS и самоподписанный сертификат SSL при использовании удаленного подключения Powershell. |
Для того, что бы мы смогли удаленно подключиться к компьютеру, необходимо создать самоподписанный сертификат. Раньше для этого приходилось использовать отдельную утилиту из SDK под названием MakeCert, но в последних версиях операционной системы Windows данную процедуру можно выполнить с помощью того же Powershell.
Хорошим тоном считается создание сертификатов по именам устройств, получить имя в переменную можно вот так:
1 |
$hostName = $env:COMPUTERNAME |
но мы будем делать сертификат связанный с IP адресом компьютера, так как в нашей сети нет ни домена, ни DNS сервера способного обработать данный запрос.
1 |
$serverCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName IP-Address-PC |
Мы успешно создали сертификат, теперь необходимо его экспортировать.
1 |
Export-Certificate -Cert $serverCert -FilePath c:\cert\PsRemoting-Cert-my-pc.cer |
Проверим появился ли сертификат в нашей папке:
1 |
Get-ChildItem c:\Cert\PsRemoting-Cert-my-pc-my-pc.cer |
Запустим службу WinRM:
1 |
Enable-PSRemoting -Force |
TCP порт по умолчанию для Powershell Remoting HTTP — 5985 и HTTPS — 5986. По умолчанию наш служба слушает порт 5985, то есть HTTP, нам же нужно будет это изменить.
1 |
Get-ChildItem wsman:\localhost\Listener |
Удаляем запись с ключом HTTP и добавляем HTTPS.
1 |
Get-ChildItem wsman:\localhost\Listener\ | Where-Object -Property Keys -eq 'Transport=HTTP' | Remove-Item -Recurse |
Проверяем, что запись удалена:
1 |
Get-ChildItem wsman:\localhost\Listener |
Создаем новую запись и привязываем сертификат:
1 |
New-Item -Path WSMan:\localhost\Listener\ -Transport HTTPS -Address * -CertificateThumbPrint $serverCert.Thumbprint -Force |
Создадим правило для файрвола:
1 |
New-NetFirewallRule -Displayname 'WinRM - Powershell remoting HTTPS-In' -Name 'WinRM - Powershell remoting HTTPS-In' -Profile Any -LocalPort 5986 -Protocol TCP |
Теперь перезагрузим службу WinRM.
1 |
Restart-Service WinRM |
Настройка сервера на данном этапе завершена, дальше необходимо добавить сертификат на машину с которой хотим подключаться.
1 |
Import-Certificate -FilePath c:\Cert\PsRemoting-Cert.cer -CertStoreLocation Cert:\LocalMachine\root\ |
Вот и все, теперь для того чтобы подключиться, нужно запустить Powershell и ввести команду:
1 |
Enter-PSSession -Computername 192.168.22.19 -UseSSL -Credential admin |
Удачных экспериментов!!!!