Powershell remote to linux

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)
    • 0.1 Сценарии подключения
    • 1.1 Установка последней версии PowerShell в Windows
    • 1.2 Установка PowerShell в Linux
    • 1.3 Установка PSRP в CentOS
    • 1.4 Подключение PowerShell SSH (Windows > Linux)
    • 1.5 Пример удаленного вызова команды
    • 1.6 Удаленный запуск скриптов
    • 1.7 Проблемы OMID SSL
    • 2.1 Установка Windows SSH клиента
    • 2.2 На стороне Linux
    • 2.3 Подключение по SSH
    • 2.4 Устранение ошибки A remote session might have ended.
    • 2.5 Использование SSH клиента из командной строки

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

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

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

    Сценарий 1

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

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

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

    Источник

    Удаленное взаимодействие с PowerShell через SSH

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

    Служба удаленного управления Windows обеспечивает надежную модель поддержки удаленных сеансов PowerShell. Удаленное взаимодействие по протоколу SSH сейчас не поддерживает настройку удаленных конечных точек и функцию JEA (Just Enough Administration).

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

    Командлеты New-PSSession , Enter-PSSession и Invoke-Command теперь имеют набор новых параметров для поддержки этой возможности удаленного взаимодействия.

    [-HostName ] [-UserName ] [-KeyFilePath ] 

    Чтобы создать удаленный сеанс, укажите целевой компьютер с помощью параметра HostName и имя пользователя с помощью параметра UserName. При интерактивном выполнении командлетов отображается запрос на ввод пароля. Вы также можете использовать проверку подлинности ключа SSH с помощью файла закрытого ключа с параметром KeyFilePath. Способ создания ключей для проверки подлинности по протоколу SSH зависит от платформы.

    Общие сведения об установке

    PowerShell 6 или более поздней версии, и на всех компьютерах должен быть установлен SSH. Установите клиент ( ssh.exe ) и сервер ( sshd.exe ) SSH, чтобы осуществлять удаленное взаимодействие между компьютерами. Решение OpenSSH для Windows теперь доступно в Windows 10 сборки 1809 и Windows Server 2019. Дополнительные сведения см. в статье Управление Windows через OpenSSH. В Linux нужно реализовать поддержку SSH (включая установку сервера sshd) в соответствии с используемой платформой. Также для поддержки удаленного взаимодействия по SSH нужно установить PowerShell с сайта GitHub. Для сервера SSH нужно настроить возможность создать подсистему SSH для размещения процесса PowerShell на удаленном компьютере. Также нужно активировать проверку подлинности на основе пароля или ключа.

    Установка службы SSH на компьютере Windows

    1. Установите последнюю версию PowerShell. Дополнительные сведения см. в статье Установка PowerShell в Windows. Чтобы убедиться, что в PowerShell есть поддержка удаленного взаимодействия SSH, перечислите наборы параметров New-PSSession . Обратите внимание на наличие имен наборов параметров, начинающихся с SSH. К этим наборам параметров относятся параметры SSH.
    (Get-Command New-PSSession).ParameterSets.Name 
    Name ---- SSHHost SSHHostHashParam 

    Примечание Если вы хотите задать PowerShell в качестве оболочки по умолчанию для OpenSSH, см. раздел Настройка Windows для OpenSSH.

    PasswordAuthentication yes 
    Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -nologo 

    Примечание Начиная с PowerShell 7.4, больше не нужно использовать -nologo параметр при запуске PowerShell в режиме сервера SSH.

    Примечание Расположение исполняемого файла PowerShell по умолчанию — c:/progra~1/powershell/7/pwsh.exe . Расположение может различаться в зависимости от способа установки PowerShell. Необходимо использовать краткое имя 8.3 для всех путей к файлам, содержащим пробелы. В OpenSSH для Windows обнаружена ошибка, блокирующая работу пробелов в путях к исполняемым файлам подсистемы. См. дополнительные сведения на сайте GitHub. Обычно краткое имя 8.3 для папки Program Files в Windows — это Progra~1 . Тем не менее для проверки можно использовать следующую команду:

    Get-CimInstance Win32_Directory -Filter 'Name="C:\\Program Files"' | Select-Object EightDotThreeFileName 
    EightDotThreeFileName --------------------- c:\progra~1 

    Установка службы SSH на компьютере Ubuntu Linux

    sudo apt install openssh-client sudo apt install openssh-server 
    PasswordAuthentication yes 

    Дополнительные сведения о создании ключей SSH в Ubuntu см. на странице справки по ssh-keygen. Добавьте запись подсистемы PowerShell:

    Subsystem powershell /usr/bin/pwsh -sshs -nologo 

    Примечание Расположение исполняемого файла PowerShell по умолчанию — /usr/bin/pwsh . Расположение может различаться в зависимости от способа установки PowerShell.

    Примечание Начиная с PowerShell 7.4, больше не нужно использовать -nologo параметр при запуске PowerShell в режиме сервера SSH.

    sudo systemctl restart sshd.service 

    Установка службы SSH на компьютере macOS

    1. Установите последнюю версию PowerShell. Дополнительные сведения см. в статье Установка PowerShell в macOS. Убедитесь, что удаленное взаимодействие SSH включено, выполните следующие действия:
      1. Откройте среду System Settings .
      2. Щелкните General .
      3. Щелкните Sharing .
      4. Установите флажок Remote Login , чтобы задать Remote Login: On .
      5. Разрешите доступ соответствующим пользователям.
      sudo nano /private/etc/ssh/sshd_config 
      PasswordAuthentication yes 
      Subsystem powershell /usr/local/bin/pwsh -sshs -nologo 

      Примечание Расположение исполняемого файла PowerShell по умолчанию — /usr/local/bin/pwsh . Расположение может различаться в зависимости от способа установки PowerShell.

      Примечание Начиная с PowerShell 7.4, больше не нужно использовать -nologo параметр при запуске PowerShell в режиме сервера SSH.

      sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd 

      Аутентификация

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

      Пользователи сохраняют те же привилегии в удаленных сеансах. Это означает, что администраторы имеют доступ к оболочке с повышенными правами, а обычные пользователи — нет.

      Пример удаленного взаимодействия PowerShell

      Проще всего проверить удаленное взаимодействие на одном компьютере. В этом примере мы создадим удаленный сеанс с одним и тем же компьютером Linux. Командлеты PowerShell мы выполняем в интерактивном режиме, поэтому мы увидим запрос от SSH на проверку удаленного компьютера, а также запрос на ввод пароля. Чтобы убедиться, что удаленное взаимодействие работает, те же операции можно выполнить на компьютере Windows. Затем установите удаленное подключение между компьютерами, изменив имя узла.

      Linux — Linux

      $session = New-PSSession -HostName UbuntuVM1 -UserName TestUser 
      The authenticity of host 'UbuntuVM1 (9.129.17.107)' can't be established. ECDSA key fingerprint is SHA256:2kCbnhT2dUE6WCGgVJ8Hyfu1z2wE4lifaJXLO7QJy0Y. Are you sure you want to continue connecting (yes/no)? TestUser@UbuntuVM1s password: 
       Id Name ComputerName ComputerType State ConfigurationName Availability -- ---- ------------ ------------ ----- ----------------- ------------ 1 SSH1 UbuntuVM1 RemoteMachine Opened DefaultShell Available 
      [UbuntuVM1]: PS /home/TestUser> uname -a Linux TestUser-UbuntuVM1 4.2.0-42-generic 49~16.04.1-Ubuntu SMP Wed Jun 29 20:22:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [UbuntuVM1]: PS /home/TestUser> Exit-PSSession 
      Invoke-Command $session -ScriptBlock
      Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName PSComputerName ------- ------ ----- ----- ------ -- -- ----------- -------------- 0 0 0 19 3.23 10635 635 pwsh UbuntuVM1 0 0 0 21 4.92 11033 017 pwsh UbuntuVM1 0 0 0 20 3.07 11076 076 pwsh UbuntuVM1 

      Linux — Windows

      Enter-PSSession -HostName WinVM1 -UserName PTestName 
      PTestName@WinVM1s password: 
      [WinVM1]: PS C:\Users\PTestName\Documents> cmd /c ver 
      Microsoft Windows [Version 10.0.10586] 

      Из Windows в Windows

      C:\Users\PSUser\Documents>pwsh.exe 
      PowerShell Copyright (c) Microsoft Corporation. All rights reserved. 
      $session = New-PSSession -HostName WinVM2 -UserName PSRemoteUser 
      The authenticity of host 'WinVM2 (10.13.37.3)' can't be established. ECDSA key fingerprint is SHA256:kSU6slAROyQVMEynVIXAdxSiZpwDBigpAF/TXjjWjmw. Are you sure you want to continue connecting (yes/no)? Warning: Permanently added 'WinVM2,10.13.37.3' (ECDSA) to the list of known hosts. PSRemoteUser@WinVM2's password: 
       Id Name ComputerName ComputerType State ConfigurationName Availability -- ---- ------------ ------------ ----- ----------------- ------------ 1 SSH1 WinVM2 RemoteMachine Opened DefaultShell Available 
      Enter-PSSession -Session $session 
      [WinVM2]: PS C:\Users\PSRemoteUser\Documents> $PSVersionTable Name Value ---- ----- PSEdition Core PSCompatibleVersions SerializationVersion 1.1.0.1 BuildVersion 3.0.0.0 CLRVersion PSVersion 6.0.0-alpha WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 GitCommitId v6.0.0-alpha.17 [WinVM2]: PS C:\Users\PSRemoteUser\Documents> 

      Ограничения

      • Команда sudo не работает в рамках сеанса удаленного взаимодействия с компьютером Linux.
      • PSRemoting через SSH не поддерживает профили и не имеет доступа к $PROFILE . После входа в сеанс можно загрузить профиль с помощью вызова с точкой, указав полный путь к профилю. Это не связано с профилями SSH. Вы можете настроить SSH-сервер для использования PowerShell в качестве оболочки по умолчанию и для загрузки профиля через SSH. Дополнительные сведения см. в документации по SSH.
      • До Выпуска PowerShell 7.1 удаленное взаимодействие по протоколу SSH не поддерживало удаленные сеансы второго прыжка. Эта возможность была ограничена сеансами через WinRM. PowerShell 7.1 позволяет Enter-PSSession и Enter-PSHostProcess работать в любом интерактивном удаленном сеансе.

      См. также раздел

      Источник

      Читайте также:  Linux низкоуровневое форматирование hdd
Оцените статью
Adblock
detector