bluebay2014 - Fotolia

Posh-SSH erleichtert die Linux-Verwaltung mit PowerShell

Sie wollen Linux-Server aus der Ferne verwalten? Mit dem Posh-SSH-Modul in PowerShell können Sie von Windows aus Linux-Dateien verwalten und die Infrastruktur überwachen.

Microsoft hat sich viel Mühe gegeben, PowerShell zu einem plattformübergreifendes Projekt auszubauen, das auf Open-Source-Basis Windows-, Linux- und Mac-Systeme bedienen kann. Ganz reibungsfrei funktioniert das Verwaltungs-Tool jedoch immer noch nicht über diese verschiedenen Betriebssysteme hinweg. In diesem Artikel erklären wir, wie Sie mit Modulen Linux-Server über die PowerShell verwalten.

Immer mehr Linux-Workloads sind mittlerweile darauf angewiesen, mit Infrastruktur zu interagieren, die traditionell auf Windows Server basiert, wie zum Beispiel Active-Directory-Domänencontroller. Verwaltungs-Tools in Windows sind jedoch in der Regel auf das Betriebssystem beschränkt und nicht mit Linux kompatibel.

Trotz der plattformübergreifenden Fähigkeiten von PowerShell ist es beispielsweise etwas komplizierter, Informationen über Linux-Server zu beziehen als über solche mit Windows. Statt zu lernen, wie Sie Skripte für Bash schreiben, können Sie ihre PowerShell-Kenntnisse nutzen, um den Code Linux-tauglich zu machen und Informationen betriebssystemübergreifend zu beziehen. Ein PowerShell-Modul namens Posh-SSH hilft, diese administrative Kluft mit einer Reihe von Cmdlets zu überbrücken und so zusätzliche Funktionen für die Arbeit mit Linux-Systemen zu erhalten.

Installieren Sie das Posh-SSH-Modul

Installieren Sie zum Starten das Modul unter Linux mit folgendem Befehl mit Administratorrechten:

Install-Module -Name Posh-SSH

Abhängig von der Konfiguration der Workstation ist möglicherweise der folgende Befehl erforderlich, der die Ausführungsrichtlinie ändert:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Verbose

Das Posh-SSH-Modul enthält mehrere Funktionen, die Linux-Administratoren vertraut sind, wie beispielsweise die Möglichkeit, Befehle über eine Secure-Shell-Sitzung (SSH) zu übergeben. Um eine vollständige Liste der Posh-SSH-Befehle zu erhalten, geben Sie Folgendes in PowerShell ein:

Get-Command -Module Posh-SSH

Um Befehle für einen Linux-Server über Posh-SSH auszuführen, muss der Administrator zwei Dinge tun: eine Verbindung zu einem SSH-fähigen Linux-Server herstellen und dann das erforderliche Posh-SSH-Modul aufrufen.

Danach gibt die Verwendung von Invoke-SSHCommand die Ergebnisse des Befehls in eine Variable zurück. Sie haben dadurch einen einfachen Weg, Informationen über Dateien, deren Inhalt oder sogar laufende Prozesse zu sammeln.

Um diese Funktionen nutzen zu können, muss OpenSSH auf dem betreffenden Server laufen. Testen Sie dies, indem Sie PuTTY oder ein ähnliches Tool einsetzen, das eine Verbindung zu Port 22 herstellt.

Verbinden Sie sich mit dem Linux-Rechner

Stellen Sie zunächst eine Sitzung mit einer Virtuellen Maschine (VM) mit Linux und installiertem OpenSSH her. In seiner Rohform lautet der Befehl wie folgt:

$setsession = New-SSHSession

Nun werden Sie aufgefordert, mehrere Felder auszufüllen. Wenn Sie später Prozesse automatisieren möchten, kann ein Skript diese Aufgabe übernehmen. Ersetzen Sie den Computernamen und den Get-Credential-Benutzernamen durch Ihre eigenen Setup-Anforderungen:

$setsession = New-SSHSession -ComputerName "192.168.83.128" -Credential (Get-Credential Systemadministrator)

Wenn der Befehl zum ersten Mal eine Verbindung zum Linux-Server herstellt, fordert er Sie auf, den Fingerabdruck des Hosts zu akzeptieren. Drücken Sie Y, um dies zu bestätigen.

Abbildung 1: Verbinden Sie sich von PowerShell aus mit einer Linux-Sitzung.
Abbildung 1: Verbinden Sie sich von PowerShell aus mit einer Linux-Sitzung.

Eine andere Möglichkeit besteht darin, SSH-Schlüssel zu verwenden, die als private Schlüsseldatei übergeben werden. Der Befehl Get-Help New-SSHSession zeigt die Auswahlmöglichkeiten.

In diesem Tutorial wird der Einfachheit halber die Get-Credential-Funktion gezeigt. Um die Anmeldeinformationen in einem Skript anzugeben, ersetzen Sie den Abschnitt Get-Credential.

Das System abfragen

Verwenden Sie für eine verbundene Sitzung Invoke-Session mit dem Befehl in einfachen Anführungszeichen, wie unten gezeigt:

$Results = Invoke-SSHCommand -SessionId 0 -Command 'uname -a'

Dies gibt die vollständigen Details des Befehls uname -a zurück, als ob er in der Konsole eingegeben worden wäre; uname -a ist der Linux-Befehl zur Ausgabe aller Systeminformationen. Posh-SSH unterstützt mehrere offene Sitzungen gleichzeitig; Ersetzen Sie einfach die SessionId-Variable für die entsprechende Sitzung. Um die aktiven Sitzungen anzuzeigen, verwenden Sie den Befehl Get-SSHSession.

Die zurückgegebenen Daten kommen als Objekt zurück; um die gewünschte Ausgabe zu erhalten, geben Sie das Cmdlet Select-Object ein und die Output-Eigenschaft:

$Results|Select-Object Output

In vereinfachter Form zeigen diese Posh-SSH-Beispiele, wie ein fortgeschritteneres Skript Informationen über Linux-Hosts sammeln kann, um einen Bericht mit einer Vielzahl von Daten zu erstellen, einschließlich der Speichernutzung und laufenden Prozesse.

Abbildung 2: Führen Sie Befehle auf dem Linux-Server über die Posh-SSH-PowerShell-cmdlets aus.
Abbildung 2: Führen Sie Befehle auf dem Linux-Server über die Posh-SSH-PowerShell-cmdlets aus.

Verwenden Sie Posh-SSH, um Dateien auf Linux-Server hochzuladen

Administratoren können Posh-SSH für wichtige Infrastrukturjobs einsetzen, zum Beispiel das Hochladen von Dateien auf eine Gruppe von Linux-Servern, um Updates vorzubereiten, anstatt jede Datei manuell hochzuladen.

Das Posh-SSH-Modul unterstützt mehrere Dateiübertragungsoptionen, einschließlich SSH FTP und Secure Copy Protocol (SCP). Das folgende Posh-SSH-Beispiel lädt eine Datei mit dem SCP-Befehl hoch und erfordert nur die OpenSSH-Serverfunktion.

Set-SCPItem -computername 192.168.83.128 -Credential  (Get-Credential sysadmin) .\update.zip – Destination /tmp/

Das Posh-SSH-Modul hilft dabei, die Reichweite von PowerShell auf die Linux-Arena auszudehnen. Windows-Administratoren, die neu in der Verwaltung dieser Systeme sind, müssen einige der grundlegenden Unterschiede zwischen den beiden Betriebssystemen kennenlernen, wie zum Beispiel, wie man Dateipfade bearbeitet und dass sie die Groß-und Kleinschreibung auf der Linux-Seite beachten müssen.

Weitere Informationen zum Posh-SSH-Modul finden Sie in seinem Repository auf GitHub.

Erfahren Sie mehr über Data-Center-Betrieb