WinRM не может подключиться

Вопрос или проблема

Я пытаюсь настроить взаимодействие двух рабочих машин (обе на Windows 2012 R2) с помощью PowerShell через WinRM. Назовем их ServerA и ServerB. На обоих машинах я выполнил следующие команды:

  1. Enable-PSRemoting -Force
  2. Set-Item WsMan:\localhost\client\trustedhosts Server[A|B]
  3. Restart-Service WinRM

С ServerB я могу удаленно подключиться к ServerA, используя команду Enter-PSSession ServerA. Однако я не могу подключиться в обратном направлении. ServerA не может подключиться к ServerB. Я получаю следующее сообщение об ошибке:

enter-pssession : Подключение к удаленному серверу ServerB не удалось с
следующим сообщением об ошибке: Клиент не может подключиться к указанному в
запросе адресу. Убедитесь, что служба на целевом сервере работает и
принимает запросы. Консультируйтесь с журналами и документацией службы
WS-Management, работающей на целевом сервере, чаще всего это IIS или WinRM.
Если целевой сервер — это служба WinRM, выполните следующую команду на
целевом сервере для анализа и настройки службы WinRM: “winrm quickconfig”.
Для получения дополнительной информации смотрите тему справки about_Remote_Troubleshooting.
На строке:1 символ:1
+ enter-pssession ServerB
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (ServerB:String) [Enter-PSSes
sion], PSRemotingTransportException
+ FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Я также попробовал подключиться к удаленной сессии к самому серверу. То есть, из ServerB Enter-PSSession ServerB. Я получаю ту же ошибку, что и выше. Я пробовал полностью отключить оба брандмауэра, но это тоже не помогло. Я также попытался выполнить Test-NetConnection ServerB -port 5985, и это выдает предупреждение:

ПРЕДУПРЕЖДЕНИЕ: TCP подключение к ServerB:5985 не удалось

ComputerName : ServerB

RemoteAddress : ip

RemotePort : 5985

InterfaceAlias : Ethernet

SourceAddress : ip

PingSucceeded : True

PingReplyDetails (RTT) : 0 ms

TcpTestSucceeded : False

С помощью команды Test-NetConnection я вижу запись в журнале событий PowerShell, которая гласит:

Сообщение об ошибке = Исключение при вызове “.ctor” с “2” аргументом(ами): “Нет соединения, так как целевая машина активно его отклонила ip:5985”

Какие еще шаги я могу предпринять для устранения проблемы с подключением?

Команда winrm quickconfig (или сокращенная версия winrm qc) выполняет следующие операции: запускает службу WinRM и устанавливает тип запуска службы на автоматический. Настраивает слушатель для портов, которые отправляют и принимают сообщения протокола WS-Management, используя либо HTTP, либо HTTPS на любом IP-адресе.

winrm quickconfig

Проблема, похоже, связана с сетью. Если TCP-подключение к порту 5985 не работает, то нет шансов, что входящее PSRemoting заработает.

Можете ли вы проверить профили подключения (Get-NetConnectionProfile) на ServerB? На общедоступной сети слушатель по умолчанию будет настроен на локальную сеть, что приведет к проблемам, когда вы пытаетесь подключиться с машины в другой подсети. Вы можете легко это проверить, посмотрев на правило входящего брандмауэра:

$rule = Get-NetFirewallRule -Name WINRM-HTTP-In-TCP
Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $rule

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

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

Очевидный вопрос: почему это работает в обратном направлении. Я подозреваю, что другой сервер имеет сеть, помеченную как ‘частная’. В частных сетях, насколько я помню, соединение…

Ответ или решение

Проблема с подключением по WinRM: Возможные причины и шаги для устранения

Когда вы сталкиваетесь с проблемой подключения по WinRM между двумя рабочими станциями Windows 2012 R2, как в вашем случае с ServerA и ServerB, важно провести тщательное расследование, чтобы определить источник проблемы. Прежде всего, заметим, что WinRM (Windows Remote Management) требует корректной настройки и открытых портов, чтобы обеспечить удаленный доступ при использовании PowerShell.

Шаги по устранению неполадок

  1. Проверка статуса службы WinRM
    Убедитесь, что служба WinRM запущена на обоих серверах. Выполните команду:

    Get-Service winrm

    Убедитесь, что статус службы – "Running". Если нет, запустите службу с помощью команды:

    Start-Service winrm
  2. Проверка настройки WinRM
    Для анализа и конфигурации WinRM выполните команду:

    winrm quickconfig

    Эта команда запустит услугу WinRM и создаст необходимые слушатели.

  3. Проверка сетевого подключения
    Судя по вашему выводу от Test-NetConnection, соединение с сервером на порт 5985 (HTTP) не проходит. Вам нужно выяснить, не блокируется ли этот порт.

    • Убедитесь, что фаерволл не блокирует порт 5985. Для этой проверки выполните следующую команду:
    Get-NetFirewallRule -Name WINRM-HTTP-In-TCP

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

    Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $rule

    Если вы обнаружите, что доступ ограничен, откройте порт для всех адресов:

    Set-NetFirewallRule -Name WINRM-HTTP-In-TCP -RemoteAddress Any
  4. Настройки сетевых профилей
    Проверьте, не установлен ли сетевой профиль на ServerB как "Public". Это может препятствовать входящим подключениям. Выполните следующую команду на ServerB:

    Get-NetConnectionProfile

    Если профиль "Public", его следует изменить на "Private":

    Set-NetConnectionProfile -NetworkCategory Private
  5. Проверка на наличие других ограничений
    Убедитесь, что другие параметры безопасности операционной системы не мешают подключению. Иногда антивирусное ПО или другие сетевые правила могут ограничивать доступ.

  6. Логи и отладка
    Проверяйте журналы событий для получения дополнительных подсказок. Особенно интересуют записи в логах WinRM и системных событиях, которые могут указать на точную причину проблемы.

    Get-EventLog -LogName Microsoft-Windows-WinRM/Operational

Заключение

Сложности с подключением через WinRM могут быть вызваны множеством факторов, включая настройки фаервола, сетевые профили, статусы служб и другие политики безопасности. Правильное выполнение всех вышеуказанных шагов поможет вам установить успешное соединение между ServerA и ServerB и обеспечит бесперебойную работу удаленного администрирования с помощью PowerShell. Не забывайте также об актуальности версий обновлений и патчей для исправления возможных уязвимостей в системе.

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

Капча загружается...