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.
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.
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.
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.
Wie bereits erwähnt, können Sie die gleichen Befehle verwenden, mit denen Sie vertraut sind, wie New-PSSession, Enter-PSSession oder Invoke-Command.
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