Перейти к содержимому

SSH подключение к Linux из Windows PowerShell

Функция удаленного взаимодействия PowerShell обычно использует WinRM для передачи данных. Теперь протокол SSH доступен на платформах Linux и Windows, что позволяет осуществлять многоплатформенное удаленное взаимодействие с PowerShell. Начиная с PowerShell 6 и выше можно работать по WinRM между Windows и Linux машинами, так-же можно работать непосредственно по SSH, при условии, что на Windows машине установлен SSH клиент.

На сегодня PS доступен в 7-ой версии для Windows, Linux, macOS платформ, последние версии доступны на ОФИЦИАЛЬНОЙ СТРАНИЦЕ POWERSHELL в GitHub. Сегодня рассмотрим несколько сценариев работы / подключения к Linux из PowerShell Windows, участники эксперимента:

  • Windows Server 2016
  • CentOS 7 + PSRP (WinRM)
  • Ubuntu 18 (SSH)
  • PowerShell (последний релиз, на сегодня 7.0.0)

Сценарии подключения

  1. Использование PSRP (WinRM)
  2. Использование SSH клиента из Powershell (более лаконочиный и предпочитаемый сценарий)

Небольшое предисловие — это ознакомительная статья, использование PS на Linux проде, это хороший вопрос, который требуется хорошо обдумать, прежде, чем использовать. По ходу статьи будут приведены ссылки на те или иные материалы / аббревиатуры, так что будем считать, что вводная на используемые технологии дана в той или иной мере.

Сценарий 1

Использование OMI сервера, работа по WINRM (PSRP) (детали ниже).

Установка последней версии PowerShell в Windows

Устанавливается одной командой:

После установки запускается командой (Ctrl +R):

Смотрим детали по установленному релизу PS:

Установка PowerShell в Linux

Устанавливается досточно просто, необходимо скопировать MS репо-конфиг из официального репозитория:

Установить PowerShell:

Запустить командой:

Проверить версию:

Установка PSRP в CentOS

Что такое PSRP — PowerShell Remoting Protocol который используется в Открытой Инфраструктуре Управления (Open Management Infrastructure (OMI))

  • Что такое PSRP
  • Что такое OMI

В данном случае достаточно будет установить в наш CentOS — PSRP Server. Rpm пакет можно загрузить из официльного репозитория PSRP, в моем случае на момент написание статьи этот вариант так-же работоспособен:

После установки в системе появляется и запускается новый system unit — omid:

Появляется новый листенер на порту 5986 (кто не знает, это WinRM):

×В моем случае используется IPv4 (по умолчанию OMI сервер использует IPv6, если он включен.

Разрешаем порт в firewalld:

Подключение PowerShell SSH (Windows > Linux)

Создаем объект для хранения SSH кред:

Объект с параметрами подключения:

Подключаемся к Linux машине:

Пример удаленного вызова команды

Здесь подразумеваю Invoke-Command:


Удаленный запуск скриптов

На стороне Windows можно создать скрипт и исполнить его на удаленной Linux машине, например PS скрипт, который отображает информацию о сетевых интерфейсах:

Далее можно вызвать этот скрипт используя Invoke-Command:

Проблемы OMID SSL

На одной из тестовых машин, во время подключения стало возникать сообщение о том, что срок действия сертификата истек, решение — перейти в каталог:

Создаем резервные копии, того, что есть:

В конфиг ssl.conf добавляем следующие параметры:

Генерируем SSL сертификаты:

Перезапускаем omid:

Сценарий 2

Лаконичный, работоспособный сценарий для работы PowerShell через SSH клиента. Нет лишних телодвижений, единственное, после установки PowerShell в Linux необходимо будет добавить один параметр в sshd конфиг.

Установка Windows SSH клиента

В этом сценарии будет использоваться менеджер пакетов CHOCOLATELY, установить его можно следующим образом:

 Далее необходимо произвести несколько настроек:

Установить SSH клиент:

Обновить переменные окружения:

На стороне Linux

В данном случае, для разнообразия используется Ubuntu, здесь так-же необходимо установить PowerShell:

×Детали по установке для различных дистрбутивов СМОТРИ НА ОФИЦИАЛЬНОМ САЙТЕ.

Добавить в:

Параметр:

Перезапустить sshd:

Подключение по SSH

На стороне Windows используя командлет Enter-PSSession тестируем подключение:

Или можно создать сессию подключения:

Далее использовать ее по назначению:

Или вызвать команду:

Или скрипт:

Устранение ошибки A remote session might have ended.

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

Решается добавлением в ручную переменной окружения ssh:

Использование SSH клиента из командной строки

Использование ssh клиента, можно использовать из командной строки в рамках обычного ssh подключения:

Опубликовано вPowershell

Ваш комментарий будет первым

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

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