Оставьте заявку

Текст сообщения:


Удаленный доступ к компьютеру с помощью PowerShell без домена.

Для того что бы суметь настроить нужно понять как это работает. Команды выше могут работать по протоколу HTTP (по порту 5985) и HTTPS (5986), за исключением версии Powershell 1.0, который работал в XP (там порт 80/443). По умолчанию у нас стоит HTTP, но и эти данные шифруются используя симметричный ключ AES-256. Сама аутентификация работает в 2 режимах NTLM и Kerberos(по умолчанию стоит он). Если у вас сеть с домен контроллером, т.е. есть Kerberos, то у вас должны работать команды выше. Если компьютеры в Workgroup, то они используют NTLM и для этого нужна дополнительная настройка. Кроме того, если вы вместо имен используете IP, то вы в любом случае используете NTLM и это по умолчанию не работает.

Задача есть два компьютера 

1. Сервер, которому мы хотим подключиться по PowerShell, имеет IP адрес ХХХ.ХХХ.ХХХ.ХХХ и имя устройства ServerName

2. Клиент компьютер с которго происходит подключение, имеет IP адрес YYY.YYY.YYY.YYY и имя  устройства ClientName

Настроим компьютер, к оторому будем в дальнейшем подключаться (он же сервер, он же удаленный компьютер) 

Запускаем на нем PowerShell под администратором.

Проверитм запущен ли сервис WinRM на том компьютере:

Get-Service -Name "*WinRM*" | fl

Если не запушен:

Enable-PSRemoting

В этом случае мы ставим запуск сервиса автоматически и настраиваем winrm в дефолтной конфигурации. Этот сервис дает возможность принимать команды Powershell и устанавливать сеансы.

Если вы работаете под профилем сети "Public" (не "Domain" или "Private"), то нужно выполнить еще один командлет, разрешающий работать в таких сетях:

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress Any

Далее необходимо добавить компьютер, с которого будет происходить подключение, в доверенные (YYY.YYY.YYY.YYY - ip адрес удаленного компьютера)

Set-Item wsman:\localhost\Client\TrustedHosts -value YYY.YYY.YYY.YYY

Настраиваем компьютер клиентский (он же удаленный, он же Ваше рабочее место)

Запускаем на нем PowerShell под администратором

winrm quickconfig (сокращенный вариант winrm qc)

можно запустить комманду
Enable-PSRemoting
Set-Item WSMan:\localhost\Client\TrustedHosts -Value XXX.XXX.XXX.XXX -Force 
рекомендую
Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force 

После этого все будет работать, но команды должны исполняться с переменной, в которой будут лежать учетные данные пользователя. Т.е. так:

$cred = Get-Credential
Enter-PSSession -ComputerName XXX.XXX.XXX.XXX -Credential $cred

Но вы на своем рабочем месте открыли доступ к своему компьютеру по WinRM теперь его закроем

Disable-PSRemoting

Но выдается сообщение о том, что не все закрыто. Поэтому останавливаем службу

stop-Service -Name WinRM

Запрещаем ее запуск

set-service -name winrm -StartupType Disabled

далее закрываем доступ в FireWall

set-NetFirewallRule -Name WINRM-HTTP-In-TCP* -Enabled False

 

 

 

При успешном подключении вы должны увидеть, что вроде 

Id     Name        ComputerName         ComputerType      State       ConfigurationName        Availability
--   ----      ------------        ------------      -----       -----------------        ------------
2    WinRM7    XXX.XXX.XXX.XXX     RemoteMachine    Broken Microsoft.PowerShell     None
3      WinRM7      XXX.XXX.XXX.XXX      RemoteMachine     Opened      Microsoft.PowerShell     Available

зайти в сессию можно командой

Enter-PSSession -Id 3

Выйти из сессии можно коммандой

Exit-PSsession

 

Полезные комманды

Вывести список компьютеров в TrustedHosts:

 get-Item WSMan:\localhost\Client\TrustedHosts

Чтобы очистить список TrustedHosts:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "" –Force

Чтобы добавить одиночный компьютер или несколько компьютеров в список TrustedHosts, используйте:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value ZZZ.ZZZ.ZZZ.ZZZ
или
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "ZZZ.ZZZ.ZZZ.ZZZ,III.III.III.III"

Чтобы добавить новый компьютер в список TrustedHosts, используйте параметр -Concatenate:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value ZZZ.ZZZ.ZZZ.ZZZ -Concatenate

 

источники. 

powershell - Вход в PSSession на удаленный сервер завершается ошибкой с сообщением "доступ запрещен" - Stack Overflow

Как в Powershell подключиться к удаленному компьютеру | FixMyPC