Setup PowerShell SSH Remoting w PowerShell 6

W wersji 6 PowerShell, Microsoft wprowadził PowerShell Remoting over SSH, który pozwala na prawdziwe wieloplatformowe remoting PowerShell między Linux, macOS i Windows. PowerShell SSH Remoting tworzy proces hosta PowerShell na maszynie docelowej jako podsystem SSH. Zwykle remoting PowerShell używa WinRM do negocjacji połączenia i transportu danych, jednak WinRM jest dostępny tylko na maszynach z systemem Windows.

Są też pewne minusy tego rozwiązania. Remoting oparty na SSH nie wspiera obecnie zdalnej konfiguracji punktów końcowych i JEA (Just Enough Administration). Ważne jest również, aby zrozumieć, że nie jest to tylko kolejny klient PowerShell SSH.

Użyj transportu SSH z PowerShell Remoting

Aby użyć PowerShell remoting z SSH możesz użyć tych samych cmdletów, które znasz z PowerShell remoting z WinRM.

  • New-PSSession
  • Enter-PSSession
  • Invoke-Command

Dla tych cmdletów są 3 nowe parametry, jeśli używasz remotingu PowerShell SSH.

  • -HostName (Zamiast -Computername, określasz docelowy SSH)
  • -UserName (Zamiast -Credentials używasz parametru -UserName)
  • -KeyFilePath (Jeśli używasz uwierzytelniania kluczy SSH, możesz użyć parametru -Credentials, aby wskazać ścieżkę dostępu do kluczy SSH).KeyFilePath do wskazania pliku klucza)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

Setup PowerShell SSH Remoting

Aby pracować z PowerShell SSH, należy wykonać następujące czynności na wszystkich systemach i maszynach.

  • Instalacja OpenSSH Server and Client
    • OpenSSH for Windows jest dostępny bezpośrednio w Windows 10 (1809) i Windows Server 2019 jako funkcja opcjonalna.
    • Na Linuksie instalujesz OpenSSH w zależności od platformy
  • Zainstaluj PowerShell 6 na wszystkich systemach
  • Skonfiguruj podsystem SSH, aby hostować proces PowerShell na zdalnej maszynie
  • Skonfiguruj uwierzytelnianie oparte na haśle lub kluczu

Krok po kroku konfiguracja zdalnego sterowania SSH w systemie Windows

Krok 1: Najpierw musisz zainstalować PowerShell 6 w systemie Windows. Możesz skorzystać z mojego wpisu na blogu, aby łatwo zainstalować PowerShell 6.

Instalacja PowerShell 6

Krok 2: Zainstaluj klienta OpenSSH i serwer Open SSH. Aby zainstalować klienta i serwer oraz wstępnie skonfigurować serwer OpenSSH, można użyć następującego polecenia.

 # Install the OpenSSH Client and Server Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Initial Configuration of SSH Server Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # Confirm the Firewall rule is configured. It should be created automatically by setup. Get-NetFirewallRule -Name *ssh* # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled

Krok 2.1: Ponieważ w OpenSSH dla Windows jest obecnie błąd, ścieżka nie akceptuje spacji. Musisz utworzyć symlink do katalogu bez spacji. Uruchom następujące polecenie w systemie docelowym.

 mklink /D c:\pwsh "C:\Program Files\PowerShell"

Krok 3: Skonfiguruj i edytuj plik sshd_config znajdujący się w katalogu $env:ProgramData na maszynie docelowej.

Edycja sshd_config

Sprawdź, czy uwierzytelnianie za pomocą hasła jest włączone

PasswordAuthentication yes

Dodaj podsystem dla PowerShell

Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

Opcjonalnie włącz uwierzytelnianie za pomocą klucza

PubkeyAuthentication yes

Jeśli jesteś zainteresowany konfiguracją uwierzytelniania za pomocą klucza z OpenSSH na Windows Server, sprawdź wpis na blogu ITOpstalk.com autorstwa Orina Thomasa (Microsoft Cloud Advocate).

Krok 4: Ponowne uruchomienie usługi sshd

 Restart-Service sshd

Krok po kroku Konfiguracja remotingu SSH w systemie Linux (Ubuntu 18.04)

Krok 1: Najpierw musisz zainstalować PowerShell 6 na Linuksie. Możesz śledzić mój wpis na blogu, aby łatwo zainstalować PowerShell 6.

Instalacja PowerShell 6 Linux

Krok 2: Zainstaluj klienta OpenSSH i serwer SSH. Aby zainstalować klienta i serwer oraz wstępnie skonfigurować serwer OpenSSH, możesz użyć następujących poleceń.

sudo apt install openssh-clientsudo apt install openssh-server

Krok 3: Konfiguracja i edycja pliku sshd_config w lokalizacji /etc/ssh na maszynie docelowej.

Sprawdź, czy uwierzytelnianie hasłem jest włączone

PasswordAuthentication yes

Dodaj podsystem dla PowerShell

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Opcjonalnie włącz uwierzytelnianie kluczem

PubkeyAuthentication yes

Krok 4: Uruchom ponownie usługę sshd

 sudo service sshd restart

SSH Remoting with PowerShell 6

Teraz możesz zacząć używać remotingu PowerShell SSH do łączenia się nawet z różnych systemów operacyjnych, takich jak Windows do Linuksa lub Linux do Windows. PowerShell 6 SSH Remoting

Jak wspomniano wcześniej, możesz użyć tych samych poleceń, które znasz, takich jak New-PSSession, Enter-PSSession lub Invoke-Command.

PowerShell SSH Remoting Linux to Windows

Jako klient możesz również użyć Azure Cloud Shell, który działa w PowerShell 6

Oczywiście, możesz również użyć PowerShell SSH remoting, aby połączyć się z Linux do Linux i Windows do Windows. Więcej informacji na temat zdalnego sterowania PowerShell SSH można znaleźć na stronach Microsoft Docs. Jeśli masz jakieś pytania, daj mi znać w komentarzach.

Tagi: Microsoft, PowerShell, PowerShell, PowerShell 6, PowerShell Core, PowerShell over SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Ostatnio zmodyfikowano: Kwiecień 4, 2019

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.