Einrichten von PowerShell SSH Remoting in PowerShell 6

Mit PowerShell Version 6 hat Microsoft PowerShell Remoting over SSH eingeführt, das echtes Multiplattform-PowerShell-Remoting zwischen Linux, macOS und Windows ermöglicht. PowerShell SSH Remoting erstellt einen PowerShell-Hostprozess auf dem Zielcomputer als SSH-Subsystem. Normalerweise verwendet PowerShell-Remoting WinRM für die Verbindungsaushandlung und den Datentransport, WinRM ist jedoch nur auf Windows-basierten Computern verfügbar.

Es gibt auch einige Nachteile. SSH-basiertes Remoting unterstützt derzeit keine Remote-Endpunktkonfiguration und JEA (Just Enough Administration). Es ist auch wichtig zu verstehen, dass dies nicht einfach ein weiterer PowerShell SSH-Client ist.

Verwenden Sie SSH-Transport mit PowerShell Remoting

Um PowerShell Remoting mit SSH zu verwenden, können Sie die gleichen Cmdlets verwenden, die Sie von PowerShell Remoting mit WinRM kennen.

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

Es gibt 3 neue Parameter für diese Cmdlets, wenn Sie PowerShell SSH-Remoting verwenden.

  • -HostName (Anstelle von -Computername, definieren Sie das SSH-Ziel)
  • -UserName (Anstelle von -Credentials verwenden Sie den Parameter -UserName)
  • -KeyFilePath (Wenn Sie die SSH-Schlüsselauthentifizierung verwenden, können Sie den -KeyFilePath-Parameter verwenden, um auf die Schlüsseldatei zu verweisen)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

Setup PowerShell SSH Remoting

Um mit PowerShell SSH zu arbeiten, müssen Sie die folgenden Schritte auf allen Systemen und Maschinen ausführen.

  • Installieren Sie OpenSSH Server und Client
    • OpenSSH für Windows ist direkt in Windows 10 (1809) und Windows Server 2019 als optionales Feature verfügbar.
    • Auf Linux installieren Sie OpenSSH je nach Plattform
  • Installieren Sie PowerShell 6 auf allen Systemen
  • Konfigurieren Sie das SSH-Subsystem, um einen PowerShell-Prozess auf dem Remotecomputer zu hosten
  • Kennwort- oder schlüsselbasierte Authentifizierung konfigurieren

Schritt für Schritt SSH-Remoting auf Windows einrichten

Schritt 1: Zunächst müssen Sie PowerShell 6 unter Windows installieren. Sie können meinem Blogbeitrag folgen, um PowerShell 6 einfach zu installieren.

PowerShell 6 installieren

Schritt 2: Installieren Sie OpenSSH Client und Open SSH Server. Um Client und Server zu installieren und den OpenSSH-Server initial zu konfigurieren, können Sie den folgenden Befehl verwenden.

 # 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

Schritt 2.1: Da es derzeit einen Fehler in OpenSSH für Windows gibt, akzeptiert der Pfad keine Leerzeichen. Sie müssen einen Symlink auf ein Verzeichnis ohne Leerzeichen erstellen. Führen Sie den folgenden Befehl auf dem Zielsystem aus.

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

Schritt 3: Konfigurieren und bearbeiten Sie die Datei sshd_config, die sich unter $env:ProgramData\ssh auf dem Zielrechner befindet.

Bearbeiten Sie sshd_config

Prüfen Sie, ob die Kennwortauthentifizierung aktiviert ist

PasswordAuthentication yes

Hinzufügen des Subsystems für PowerShell

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

Optional aktivieren Sie die Schlüsselauthentifizierung

PubkeyAuthentication yes

Wenn Sie an der Einrichtung der schlüsselbasierten Authentifizierung mit OpenSSH auf Windows Server interessiert sind, lesen Sie den Blogbeitrag auf ITOpstalk.com von Orin Thomas (Microsoft Cloud Advocate).

Schritt 4: Neustart des sshd-Dienstes

 Restart-Service sshd

Schrittweise Einrichtung von SSH-Remoting unter Linux (Ubuntu 18.04)

Schritt 1: Zuerst müssen Sie PowerShell 6 auf Linux installieren. Sie können meinem Blogbeitrag folgen, um PowerShell 6 einfach zu installieren.

PowerShell 6 Linux installieren

Schritt 2: Installieren Sie OpenSSH Client und Open SSH Server. Zur Installation von Client und Server und zur anfänglichen Konfiguration des OpenSSH-Servers können Sie die folgenden Befehle verwenden.

sudo apt install openssh-clientsudo apt install openssh-server

Schritt 3: Konfigurieren und bearbeiten Sie die Datei sshd_config am Speicherort /etc/ssh auf dem Zielcomputer.

Überprüfen Sie, ob die Kennwortauthentifizierung aktiviert ist

PasswordAuthentication yes

Hinzufügen des Subsystems für PowerShell

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

Optional aktivieren Sie die Schlüsselauthentifizierung

PubkeyAuthentication yes

Schritt 4: Starten Sie den sshd-Dienst neu

 sudo service sshd restart

SSH-Remoting mit PowerShell 6

Jetzt können Sie PowerShell SSH-Remoting nutzen, um sich auch von verschiedenen Betriebssystemen wie Windows zu Linux oder Linux zu Windows zu verbinden. PowerShell 6 SSH Remoting

Wie bereits erwähnt, können Sie die gleichen Befehle verwenden, mit denen Sie vertraut sind, wie New-PSSession, Enter-PSSession oder Invoke-Command.

PowerShell SSH Remoting Linux zu Windows

Als Client können Sie auch die Azure Cloud Shell verwenden, auf der PowerShell 6 läuft

Natürlich können Sie auch das PowerShell SSH Remoting verwenden, um sich von Linux zu Linux und Windows zu Windows zu verbinden. Weitere Informationen zum PowerShell SSH-Remoting finden Sie auf den Microsoft Docs Seiten. Wenn Sie Fragen haben, lassen Sie es mich bitte in den Kommentaren wissen.

Tags: Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell over SSH, Powershell Remoting, Setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Last modified: April 4, 2019

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.