Mit der Windows PowerShell eine SSH Verbindung erstellen

Überblick

Endlich bietet auch die Windows PowerShell eine Möglichkeit, um einen SSH-Zuriff zu erstellen. I. d. R. musste man immer auf Tools wie  Putty oder  MobaXterm zurückgreifen. Neuerdings kann man sich mit einem Drittanbieter Tool ein Modul in der Windows PowerShell installieren, mit dem man einen Zugriff aufbauen kann. Voraussetzung hierfür ist allerdings Windows 10* oder das Windows Management Framework 5.

Voraussetzungen für SSH

Neben diesen beiden oben genannte Bedingungen braucht man auch ein entsprechendes Modul. Das Modul mit dem Namen PoSH-SSH muss entsprechend in der PowerShell installiert werden. Module sind vom Prinzip Befehlserweiterungen mit welchen man zusätzliche Cmdlets erhält. Mehr zu Modulen findet ihr im Artikel: Was sind PowerShell Module.

In diesem Fall für SSH wird eben das Modul Posh-SSH benötigt. Damit erhält man anschließend eine Menge Befehle. Zur Verfügung gestellt wird es vom   NuGet Anbieter. Sollte man das Paket mittels folgendem Befehl suchen, so wird man automatisch hingewiesen, das der Paketmanager installiert werden muss.

Find-Module PoSH-SSH | Install-Module
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Modul PoSH-SSH
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Modul PoSH-SSH

Nach dem Einbinden von PoSH-SSH kann man sich mal anzeigen lassen, welche Cmdlets darin enthalten sind. Neben SSH sind auch Cmdlets für SFTP in dem Moduel drinnen.

get-command -Module Posh-SSH

Eine SSH Verbindung erstellen

Für den Aufbau einer SSH-Sitzung ist das Cmdlet New-SSHSession zuständig. Um den Befehl mit seinen nötigen Parametern und Option anzeigen zu lassen, verwende ich immer gerne die Hilfe. Auch für dieses Cmdlet würde ich das empfehlen. Mit der Option example erhält man auch gleich einige Beispiel.

Get-Help New-SSHSession -Detailed
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Modul PoSH-SSH: Hilfe zu den Cmdlets
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Modul PoSH-SSH: Hilfe zu den Cmdlets

Im folgenden Beispiel wurde eine SSH-Session auf einem Linux Rootserver geöffnet. Automatisch wird man nach dem Fingerprint gefragt, welcher natürlich mit „yes“ bestätigt werden muss. Das anschließend eine Sitzung aufgebaut ist, kann man anhand von „Connected“ erkennen.

New-SSHSession -ComputerName 172.16.3.171 -Credential test
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Verbindungsaufbau
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Verbindungsaufbau
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Verbindungsaufbau
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Verbindungsaufbau
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Verbindungsaufbau - Bestehende Verbindung
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Verbindungsaufbau – Bestehende Verbindung

Die nächste entscheidende Aufgabe ist natürlich das Eingeben von Befehlen. Das nötige Cmdlet ist hier Invoke-SSHCommand. Auch hier empfiehlt es sich mal die Hilfe dazu anzeigen zu lassen.

Man benötigt zum einen die SessionID und anschließend das auszuführende Kommando. Im unten dargestellten Beispiel wurde per SSH die Anfrage nach dem Installieren Linux Kernel auf dem Rootserver abgefragt.

Invoke-SSHCommand -SessionId 0 -Command "uname -a"
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Befehle über SSH ausführen
Windows PowerShell SSH Zugriff auf Rootserver erstellen: Befehle über SSH ausführen

Um am Ende die Verbindung wieder zu beenden braucht man das Remove-SSHSession Cmdlet. Ob dies korrekt ausgeführt wurde bzw. ob noch eine SSHSession besteht könnte man abschließend mit Get-SSHSession prüfen. Sofern hier nichts mehr angezeigt wird, ist die Session beendet.

Eine interessante Option ist das Öffnen eines SSHShellStreams. Damit ist es möglich mehrere Kommandos einzugeben und direkt auszuführen.

Windows PowerShell SSH Zugriff aufbauen - SSHShellStream
Windows PowerShell SSH Zugriff aufbauen – SSHShellStream
Windows PowerShell SSH Zugriff aufbauen - SSHShellStream
Windows PowerShell SSH Zugriff aufbauen – SSHShellStream

Fazit

Die Eingabe von Kommandos ist allerdings nicht ganz so komfortabel wie mit Putty. Aber es ist schon mal hervorragend, wenn man sich schnell mal drauf schalten kann, um nur etwas zu überprüfen. Übrigens kann man die BASH auch unter Windows installieren. Damit ist es möglich wie unter Linux eine ganz normale SSH-Session aufzubauen. Wie man die BASH unter Linux installiert, könnt ihr gerne im Artikel: Linux BASH unter Windows installieren, nachlesen.

Wenn du mehr über die Windows PowerShell lernen möchtest, so findest du auch immer hervorragende und ausführliche Kurse auf Udemy. Zu empfehlen sind die Kurse von Patrick Grünauer: Der Einsteigerkurse ist dabei folgender: Automatisierung mit PowerShell (1/3): Grundlagen.*

Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 9.11.2023

d75f12b3ac1b4af4a03ecccc134156be

Das könnte ich auch interessieren:


Steigere dein Wissen

Kostenlose Befehlsreferenzen und E-Books herunterladen

Mehr Informationen zu den kostenlosen Materialien.


2 Kommentare zu „Mit der Windows PowerShell eine SSH Verbindung erstellen“

  1. Da das das erste Modul war, dass ich jemals installieren wollte, würde ich die Zeile „Find-Module PoSH-SSH“ ändern in „Find-Module PoSH-SSH | Install-Module“. Damit wird das Modul gefunden und direkt installiert.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen