Es war einmal, als Sie bei der Verwendung von Windows PowerShell mit PowerShell Remoting auf bestimmte Arten von Computern beschränkt waren. Da PowerShell Remoting nur den WsMan-Anbieter unterstützte, waren Ihre Chancen, beispielsweise eine Verbindung zu Computern mit Linux herzustellen, gleich null. Doch im Jahr 2015 hat Microsoft Unterstützung für SSH eingeführt, was ein enormes Potenzial mit sich brachte und Ihnen schließlich ermöglichte, SSH und PowerShell zusammen zu verwenden.
In diesem Artikel werden wir uns genauer damit befassen, wie Sie den SSH-Client von Windows einrichten können und wie Sie SSH und PowerShell Remoting nutzen können.
Dieser Beitrag zu SSH und PowerShell ist Teil der Blog-Serie #PS7Now. Vergewissern Sie sich, dass Sie alle anderen Beitragenden in dieser Serie am Ende dieses Beitrags überprüfen.
Vor dem Beginn
Dieser Artikel wird ein Schritt-für-Schritt-Tutorial sein. Wenn Sie beabsichtigen, mitzumachen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- Windows 10 – Alle Beispiele verwenden Windows 10 Build 1903. Das Beispiel befindet sich im gleichen Bereich wie der entfernte Windows Server.
- PowerShell v6+ installiert auf Windows 10 – Alle Beispiele verwenden PowerShell 7 RC2.
- A remote SSH server – All examples will use a Windows Server SSH machine. If you’re connecting to a Linux machine, you can skip the server setup steps.
- TCP-Port 22 verfügbar auf dem entfernten Server
SSH-Client (Windows 10) Einrichtung
Bevor Sie eine PowerShell-Konsole öffnen, müssen Sie zunächst einige einmalige Aufgaben durchführen, um SSH und PowerShell so einzurichten, dass Windows 10 eine Verbindung zu einem entfernten SSH-Server herstellen kann.
Fügen Sie den OpenSSH-Ordner zur PATH-Umgebungsvariable hinzu
OpenSSH ist auf Windows 10 vorinstalliert, benötigt jedoch manchmal etwas Unterstützung, um mit PowerShell Remoting zu funktionieren. Wenn Sie beispielsweise bereits versucht haben, Enter-PSSession
zu verwenden, um eine Verbindung zu einem entfernten SSH-System herzustellen, und auf den unten stehenden Fehler gestoßen sind, müssen Sie sicherstellen, dass der Pfad zur OpenSSH-Ausführbaren Datei (ssh.exe) in der PATH-Umgebungsvariable vorhanden ist.
Um den Pfad des OpenSSH-Ordners zur PATH-Umgebungsvariable hinzuzufügen, klicken Sie auf die Start-Schaltfläche und suchen Sie nach erweiterten Systemeinstellungen. Klicken Sie dann auf Erweiterte Systemeinstellungen anzeigen, wie unten gezeigt.

Wenn das Fenster Systemeigenschaften angezeigt wird, klicken Sie auf die Schaltfläche Umgebungsvariablen.

Im Fenster Umgebungsvariablen wählen Sie unter Systemvariablen Path aus und klicken Sie auf Bearbeiten.

Im Fenster Umgebungsvariable bearbeiten klicken Sie auf Neu und geben Sie dann den Pfad ein, in dem die ausführbare Datei ssh.exe liegt. In diesem Tutorial ist der Pfad C:\Program Files\OpenSSH, wie unten gezeigt. Nach der Eingabe klicken Sie zweimal auf OK, um den neuen Wert zu speichern.

SSH-Subsystem angeben
Sie müssen jetzt das SSH-Subsystem angeben, auf das PowerShell zugreifen soll, wenn eine Verbindung über SSH mit dem entfernten Windows Server hergestellt wird. Wenn Sie PowerShell nicht mitteilen, welches Subsystem verwendet werden soll, erhalten Sie unweigerlich folgenden Fehler:
Enter-PSSession : Der Hintergrundprozess hat einen Fehler gemeldet mit der folgenden Nachricht: Die SSH-Client-Sitzung wurde mit der Fehlermeldung beendet: Subsystem-Anforderung fehlgeschlagen auf Kanal 0.
Beachten Sie, dass Sie diese Schritte nicht ausführen müssen, wenn Sie sich nicht mit einer Windows Server-Maschine verbinden.
Auf dem entfernten Windows Server öffnen Sie die Datei C:\ProgramData\ssh\ssh_config. Scrollen Sie zum Abschnitt override default of no subsystems in der Datei ssh_config. Der Abschnitt wird wie im folgenden Screenshot aussehen.

Fügen Sie unterhalb der bestehenden Subsystem-Zeile das PowerShell-Subsystem mit der folgenden Zeile hinzu:
Speichern Sie nun die Datei ssh_config und starten Sie den sshd-Windowsdienst auf dem entfernten Windows-Server neu, wie unten gezeigt.
Nach dem Neustart des Dienstes sollten Sie nun eine Verbindung über SSH und PowerShell herstellen können.
Verbindung über PowerShell und SSH
Jetzt, da die Konfiguration abgeschlossen ist, ist es Zeit, PowerShell Remoting zu testen.
Versuchen Sie zunächst, eine interaktive Sitzung zu starten, indem Sie das Cmdlet Enter-PSSession
verwenden. Anders als gewohnt, verwenden Sie nicht den Parameter ComputerName
. Stattdessen verwenden Sie den Parameter HostName
, um den Remote-Computer anzugeben.
Standardmäßig verwendet PowerShell Remoting immer noch WsMan. Um dies zu ändern, verwenden Sie den Parameter SSHTransport
, um anzugeben, dass Sie über SSH und PowerShell eine Verbindung herstellen möchten.
Wenn Sie sich beim ersten Verbindungsversuch mit Benutzername und Passwort anmelden, müssen Sie einen SSH-Privatschlüssel erstellen. Sie werden aufgefordert, wie unten gezeigt. Wenn Sie aufgefordert werden, geben Sie ‚y‘ ein, um zu akzeptieren.

Anschließend werden Sie nach dem Kennwort des Benutzers gefragt, mit dem Sie derzeit angemeldet sind.
Beachten Sie, dass in diesem Beispiel der Windows 10-Client und der Windows Server SSH-Server im selben Active Directory-Domäne sind. Standardmäßig versucht PowerShell Remoting, sich mit dem angemeldeten Benutzer zu authentifizieren. Sie können auch den
Credential
-Parameter verwenden, um einen anderen Benutzernamen und ein Passwort anzugeben.
Nachdem Sie das Passwort bereitgestellt haben, sollten Sie sich dann an einer vertrauten PowerShell Remoting-Eingabeaufforderung befinden.

Beenden Sie nun die Sitzung mit exit
und versuchen Sie dann New-PSSession
. Beachten Sie, dass bei Verwendung der gleichen HostName
– und SSHTransport
-Parameter wie zuvor, der Transport
nun als SSH
angezeigt wird.
Sie können immer noch WsMan als Transportprotokoll verwenden, indem Sie den ComputerName
-Parameter ohne Verwendung des SSHTransport
-Parameters verwenden.
Sie müssen keinen Benutzernamen und kein Passwort für SSH verwenden. Sie könnten stattdessen eine Private-Key-Datei verwenden und den
KeyFilePath
-Parameter verwenden, um den Speicherort anzugeben.

Vergessen Sie nicht, Ihre offenen Sitzungen mit Get-PSSession | Remove-PSSession
aufzuräumen!
Zusammenfassung
Sie sollten nun wissen, wie Sie sowohl Windows 10 als auch Windows Server so einrichten können, dass sie SSH mit PowerShell Remoting verwenden. Einmal konfiguriert, besteht der einzige Unterschied zwischen der Verwendung von WsMan als Transportprotokoll und SSH in einigen Parametern!
Wenn Sie mehr über PowerShell und SSH erfahren möchten, sollten Sie sich unbedingt den Artikel zur PowerShell-Remotesteuerung über SSH in der Microsoft-Dokumentation ansehen.
#PS7Now-Beiträger
Dieser Beitrag war Teil einer Serie über PowerShell 7 von den großartigen Beitragenden, die Sie unten sehen. Schauen Sie sich unbedingt ihre Beiträge an und sehen Sie, was sie auf ihren Blogs tun!
Author | Blog | |
---|---|---|
Josh King | @WindosNZ | https://toastit.dev/ |
Adam Bertram | @adbertram | https://adamtheautomator.com/ |
Jonathan Medd | @jonathanmedd | |
Thomas Lee | @doctordns | https://tfl09.blogspot.com/ |
Prateek Singh | @singhprateik | https://ridicurious.com |
Dave Carroll | @thedavecarroll | https://powershell.anovelidea.org/ |
Dan Franciscus | @dan_franciscus | https://winsysblog.com/ |
Jeff Hicks | @jeffhicks | https://jdhitsolutions.com |
Josh Duffney | @joshduffney | http://duffney.io/ |
Mike Kanakos | @MikeKanakos | https://www.networkadm.in/ |
Tommy Maynard | @thetommymaynard | https://tommymaynard.com// |