Mit der Windows PowerShell eine SSH Verbindung erstellen

Über Windows Powershell eine SSH Session 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 einen 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 im 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 folgendem 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 braucht 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.

Interessantes


  • 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.