PowerShell удаленного взаимодействия с IP-адресом в качестве цели - PullRequest
56 голосов
/ 05 июля 2011

Я успешно включил PSRemoting на моем сервере 2008 R2. Я могу выполнить удаленную рассылку из той же сети, используя имя хоста в качестве цели.

У меня не получается, когда я пытаюсь использовать IP-адрес в качестве цели с любого компьютера (внутри сети или из другой сети (например, через VPN)). Я хочу использовать удаленное взаимодействие через VPN-соединение, где мне нужно использовать IP-адрес, поскольку имя хоста не может быть разрешено.

Я не хочу добавлять имена в мой hosts-файл, потому что у наших клиентов есть несколько других серверов с одинаковым dns-именем, и я не хочу удалять и вставлять name-ip-address -сообщение снова и снова.

Я надеюсь, что кто-нибудь подскажет, как разрешить вызов цели psremoting по IP.

Редактировать : Точнее, я хочу иметь возможность запустить это:

Enter-PSSession -Computername 192.168.123.123 -credentials $cred 

Но я могу выполнить эту команду, только если передам имя хоста "-Computername"

Edit2
При попытке войти в систему, используя ip вместо имени хоста (из внутренней сети), я получаю следующее сообщение об ошибке:

Enter-PSSession : Connecting to remote server failed with the following error message : The WinRM client cannot process
 the request. Default authentication may be used with an IP address under the following conditions: the transport is HT
TPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure T
rustedHosts. Note that computers in the TrustedHosts list might not be authenticated. For more information on how to se
t TrustedHosts run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting
 Help topic.

Edit3:
Я знаю о настройке доверенных хостов в WSMan, но это не проблема. Он уже установлен на «*» (я сделал это сразу после включения удаленного взаимодействия), но я все еще не могу подключиться к этому серверу, используя ip в качестве target-computername, но я могу подключиться, используя имя хоста в качестве target-computername , Похоже, что в IIS есть что-то вроде привязки, которая не позволяет слушателю прослушивать запросы, направленные на ip-номер вместо имени хоста. Но IIS не установлен. Я не знаю, где искать такую ​​настройку.

Обновление 2011-07-12:
Ладно, я думаю, что настройка trusthosts не является проблемой, потому что я МОГУ подключиться с нашего DC через имя хоста, но не если я использую ip-адрес назначения для параметра компьютера.
Я думаю, проблема должна быть у слушателя. Возможно, слушатель не принимает никаких запросов, которые были направлены на IP-адрес назначения вместо имени хоста-назначения. Но я не знаю, как это изменить.

Ответы [ 5 ]

44 голосов
/ 12 июля 2011

Сообщение об ошибке дает вам большую часть того, что вам нужно.Это не только список TrustedHosts;это говорит о том, что для использования IP-адреса со схемой аутентификации по умолчанию вы также должны использовать HTTPS (который не настроен по умолчанию) и предоставить явные учетные данные.Я могу сказать, что вы, по крайней мере, не используете SSL, потому что вы не использовали ключ -UseSSL.

Обратите внимание, что SSL / HTTPS не настроен по умолчанию - это дополнительный шаг, который вам придется предпринять,Вы не можете просто добавить -UseSSL.

Механизм аутентификации по умолчанию - Kerberos, и он хочет видеть реальные имена хостов, как они появляются в AD.Не IP-адреса, не псевдонимы DNS CNAME.Некоторые люди включат обычную аутентификацию, которая менее требовательна, но вы также должны настроить HTTPS, поскольку в противном случае вы бы передавали учетные данные в открытом тексте.Enable-PSRemoting только устанавливает HTTP.

Добавление имен в файл hosts не будет работать.Это не проблема разрешения имен;речь идет о том, как осуществляется взаимная аутентификация между компьютерами.

Кроме того, если два компьютера, подключенные к этому соединению, не находятся в одном домене AD, механизм проверки подлинности по умолчанию не будет работать.Прочтите «help about_remote_trou устранение неполадок» для получения информации о настройке недоменной и междоменной аутентификации.

Из документов на http://technet.microsoft.com/en-us/library/dd347642.aspx

HOW TO USE AN IP ADDRESS IN A REMOTE COMMAND
-----------------------------------------------------
    ERROR:  The WinRM client cannot process the request. If the
    authentication scheme is different from Kerberos, or if the client
    computer is not joined to a domain, then HTTPS transport must be used
    or the destination machine must be added to the TrustedHosts
    configuration setting.

The ComputerName parameters of the New-PSSession, Enter-PSSession and
Invoke-Command cmdlets accept an IP address as a valid value. However,
because Kerberos authentication does not support IP addresses, NTLM
authentication is used by default whenever you specify an IP address. 

When using NTLM authentication, the following procedure is required
for remoting.

1. Configure the computer for HTTPS transport or add the IP addresses
   of the remote computers to the TrustedHosts list on the local
   computer.

   For instructions, see "How to Add a Computer to the TrustedHosts
   List" below.


2. Use the Credential parameter in all remote commands.

   This is required even when you are submitting the credentials
   of the current user.
25 голосов
/ 06 июля 2011

Попробуйте сделать это:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
4 голосов
/ 06 июля 2011

Я проверяю ваше утверждение в моей инфраструктуре, IP-адрес не проблема, у меня работает следующее:

PS C:\Users\JPB> hostname
JPBCOMPUTER
PS C:\Users\JPB> Enter-PSSession -ComputerName 192.168.183.100 -Credential $cred
[192.168.183.100]: PS C:\Users\jpb\Documents>
[192.168.183.100]: PS C:\Users\jpb\Documents> hostname
WM2008R2ENT

Если вы пытаетесь работать через VPN, вам лучше взглянуть на настройки брандмауэра на пути к вашему серверу. Установка и настройка для удаленного управления Windows может помочь вам. Порт TCP, на котором WinRM ожидает:

WinRM 1.1 и более ранние версии: порт HTTP по умолчанию - 80.

WinRM 2.0: порт HTTP по умолчанию - 5985.


Отредактировано: по вашей ошибке вы можете проверить это на компьютере своего клиента:

Set-Item WSMan:\localhost\Client\TrustedHosts *
3 голосов
/ 07 июля 2011

Ребята предложили простое решение, которое поможет вам взглянуть на помощь - это хорошо, выглядит много за один раз, но на самом деле быстро читается:

get-help about_Remote_Troubleshooting | more
1 голос
/ 23 августа 2018

На вашей машине * запустить 'Set-Item WSMan:\localhost\Client\TrustedHosts -Value "$ipaddress"

* Машина, с которой вы запускаете PSSession

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...