- PowerShell ermöglicht native SSH-Verbindungen in Windows, Linux und macOS zur sicheren Verwaltung von Remote-Systemen.
- OpenSSH lässt sich einfach installieren und konfigurieren und ermöglicht eine integrierte Kennwort- oder Public-Key-Authentifizierung.
- PowerShell-Cmdlets unterstützen Remote-SSH-Sitzungen, Befehlsausführung und Dateiübertragung, ohne auf externe Software angewiesen zu sein.
Heutzutage ist die Remote-Systemadministration ein Muss für jeden Systemadministrator, Entwickler oder Computer-Enthusiasten, der mit verschiedenen Servern oder PCs arbeitet, egal ob sie Windows, Linux oder sogar macOS. Das Erscheinen von PowerShell mit nativer Unterstützung für SSH war ein echter Katalysator. Informationen zum sicheren und effektiven Verbinden und Verwalten von Computern. Wenn Sie immer noch der Meinung sind, dass Sie externe Software benötigen oder der Vorgang kompliziert ist, lesen Sie weiter: Dieser Artikel räumt alle Ihre Zweifel aus und dient als umfassende Anleitung zur Verwendung von SSH über PowerShell. Er behandelt Installationen, Befehle, erweiterte Schritte und praktische Tipps für verschiedene Umgebungen.
Die Möglichkeit, über SSH eine Verbindung von PowerShell herzustellen, ermöglicht Ihnen nicht nur die Verwaltung von Servern, ohne Ihren Stuhl zu verlassen, erspart Ihnen aber auch die Installation von Drittanbieteranwendungen und bietet ein natives, sicheres und plattformübergreifendes Erlebnis. Die Integration von SSH in PowerShell hat Automatisierungs- und Verwaltungsaufgaben sowohl in Infrastrukturen als auch Windows wie in gemischten Umgebungen, in denen Systeme verschiedener Hersteller nebeneinander existieren.
Was ist SSH und warum sollte es mit PowerShell verwendet werden?
SSH- (Secure Shell) ist ein Protokoll, das Ihnen eine verschlüsselte und sichere Verbindung zu anderen Computern über das Netzwerk ermöglicht. Ersetzt ältere Protokolle wie Telnet, wodurch sichergestellt wird, dass alle gesendeten Daten (Anmeldeinformationen oder Befehle) vor möglichem Abfangen geschützt sind. Es ist seit Jahren der Standard für sicheren Fernzugriff, insbesondere auf Linux-Servern, aber seine Verwendung in Windows ist dank der Integration von OpenSSH im System selbst und in PowerShell.
Mit PowerShell SSH-Befehle können von der Konsole aus ausgeführt werden Windows oder Skripte, verwalten Sie Dateien, automatisieren Sie Aufgaben und stellen Sie eine Verbindung zu beiden Servern her Windows wie Linux oder Netzwerkgeräte – alles von einem einzigen Tool aus. Dies macht es zu einer sehr flexiblen und leistungsstarken Lösung.
Vorteile der Verwendung von SSH von PowerShell
- Multiplattform: Systeme verwalten Windows, Linux und macOS, ohne zwischen Anwendungen wechseln zu müssen.
- Einfache Automatisierung: Integrieren Sie SSH-Befehle in Ihre PowerShell-Skripte für wiederkehrende Aufgaben.
- Keine zusätzliche Software: Vergessen Sie die Installation externer Clients wie PuTTY, da die Funktionalität standardmäßig in Windows 10, 11 und Server 2019 oder höher.
- Sicherheit: SSH verschlüsselt die gesamte Kommunikation und unterstützt die Kennwort- oder Schlüsselauthentifizierung.
Voraussetzungen für die Verwendung von SSH in PowerShell
Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Grundvoraussetzungen erfüllen:
- PowerShell Version 5.1 oder höher (PowerShell 6 oder 7 wird für SSH-Kompatibilität und erweiterte Funktionen empfohlen).
- SSH-Client installiert. in Windows 10 seit Version 1809 und Windows OpenSSH ist in Server 2019 vorinstalliert. Frühere Versionen können Sie manuell im Abschnitt „Optionale Funktionen“ installieren. Windows.
- SSH-Server aktivDer Computer, mit dem Sie eine Verbindung herstellen möchten, muss über einen laufenden SSH-Server verfügen, sei es ein Linux-Server, ein anderer Windows, ein macOS oder ein kompatibles Netzwerkgerät.
- Entsprechende GenehmigungenSie müssen über gültige Anmeldeinformationen auf dem Remotecomputer verfügen (Benutzername und Kennwort oder SSH-Schlüssel) und vorzugsweise Administrator sein, wenn Sie Dienste installieren oder konfigurieren.
- Netzwerkzugriff und Port 22 Öffnen Sie die Firewall, um SSH-Verbindungen zuzulassen.
Installieren und Konfigurieren von OpenSSH in Windows
OpenSSH-Integration in Windows Es handelt sich um einen der größten Fortschritte in der Remote-Administration mit PowerShell. Hier sind die wichtigsten Schritte zur ordnungsgemäßen Installation und Konfiguration:
1. Überprüfen Sie, ob OpenSSH vorhanden ist
Öffnen Sie PowerShell als Administrator und führen Sie Folgendes aus:
Erhalten-WindowsCapability-Online | Where-Object Name -wie 'OpenSSH*'
Wenn für OpenSSH.Client oder OpenSSH.Server der Status „Installiert“ angezeigt wird, ist die Anwendung bereits verfügbar. Wenn „Nicht vorhanden“ angezeigt wird, müssen Sie die Anwendung installieren.
2. Installieren Sie den OpenSSH-Client und/oder -Server
Hinzufügen-WindowsFähigkeit -Online -Name OpenSSH.Client~~~~0.0.1.0 Hinzufügen-WindowsFähigkeit -Online -Name OpenSSH.Server~~~~0.0.1.0
Mit der ersten können Sie eine Verbindung zu anderen Computern herstellen, mit der zweiten können andere eine Verbindung zu Ihrem PC herstellen.
3. Starten und konfigurieren Sie den OpenSSH-Dienst
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatisch'
Dadurch wird der Dienst aktiviert und so eingestellt, dass er automatisch mit Windows.
4. Firewall-Konfiguration
Stellen Sie sicher, dass Ihre Firewall Windows Ermöglicht SSH-Verbindungen auf Port 22. Wenn Sie OpenSSH installieren, wird die Regel normalerweise automatisch erstellt. Um dies zu überprüfen, können Sie Folgendes verwenden:
Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP"
Wenn es nicht vorhanden ist, können Sie es einfach hinzufügen:
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Konfigurieren Sie SSH unter Linux, macOS und Windows für Remote-PowerShell-Sitzungen
SSH in PowerShell dient nicht nur der Verbindung mit Linux-Systemen. Ab PowerShell 6 können damit Remote-PowerShell-Sitzungen (PSRemoting) mit SSH als Transportmittel ausgeführt werden, was wirklich plattformübergreifende Sitzungen ermöglicht.
Konfiguration in Windows
- Installieren Sie die neueste Version von PowerShell. Sie können es herunterladen von GitHub.
- Bearbeiten Sie die Datei sshd_config (At
$Env:ProgramData\ssh):- Aktivieren Sie die Kennwortauthentifizierung:
PasswortAuthentifizierung ja
- Fügen Sie das Subsystem für PowerShell hinzu:
Subsystem Powershell C:/progra~1/powershell/7/pwsh.exe -sshs
Sie können einen symbolischen Link erstellen, um den Pfad der ausführbaren Datei zu erleichtern:
Neues Element -Elementtyp Symbolischer Link -Pfad 'C:\ProgramData\ssh\' -Name 'pwsh.exe' -Wert (Get-Command pwsh.exe).Quelle
- Wenn Sie die Schlüsselauthentifizierung verwenden möchten:
PubkeyAuthentication ja
- Aktivieren Sie die Kennwortauthentifizierung:
- Starten Sie den SSHD-Dienst neu:
Neustart-Dienst sshd
- Stellen Sie sicher, dass der OpenSSH-Pfad in der PATH-Variable enthalten ist.
Konfiguration unter Linux
- Installieren von PowerShell aus dem offiziellen Repository ().
- Installieren Sie den SSH-Server:
sudo apt installiere openssh-client sudo apt installiere openssh-server
- Bearbeiten Sie die Datei /etc/ssh/sshd_config:
- Sichern Sie die Leitung:
PasswortAuthentifizierung ja
- Fügen Sie das PowerShell-Subsystem hinzu:
Subsystem Powershell /usr/bin/pwsh -sshs -NoLogo
- Für die Authentifizierung mit öffentlichem Schlüssel:
PubkeyAuthentication ja
- Sichern Sie die Leitung:
- Starten Sie den SSH-Dienst neu:
sudo systemctl sshd.service neu starten
Einstellungen unter macOS
- Installieren Sie die neueste Version von PowerShell.
- Fernzugriff aktivieren (Remote Login) in den Systemeinstellungen, Abschnitt „Freigabe“.
- Bearbeiten Sie /private/etc/ssh/sshd_config und fügt hinzu:
- PasswortAuthentifizierung ja
- Subsystem Powershell /usr/local/bin/pwsh -sshs -NoLogo
- PubkeyAuthentication ja
- Starten Sie den SSH-Dienst neu:
sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd
Remoteverbindung und -verwaltung mit PowerShell und SSH
Es gibt zwei Hauptmethoden, um SSH von PowerShell aus zu verwenden:
- Führen Sie den Befehl aus ssh direkt von der Konsole aus, genau wie auf Linux- oder macOS-Systemen.
- Verwenden PowerShell-spezifische Cmdlets für Remote-Sitzungen: Neue PSSession, Geben Sie die PSSession ein, Aufruf-Befehl, die eine SSH-Verbindung als Transport unterstützen, ideal zum Ausführen von Befehlen oder Skripten auf anderen Computern.
Grundlegende Verbindung mit dem SSH-Befehl
SSH-Benutzer@IP_oder_Hostname
Sie werden zur Eingabe Ihres Kennworts aufgefordert. Wenn Sie die Authentifizierung mit öffentlichem Schlüssel eingerichtet haben, wird dieses direkt verwendet.
Sie können alle üblichen Linux-Befehle verwenden und auch Dateien bearbeiten, Dienste neu starten usw. Um die Sitzung zu beenden, verwenden Sie wunsch.
PowerShell-Cmdlets mit SSH
Ab PowerShell 6 können Sie Remotesitzungen mit SSH erstellen. Beispiele:
$session = Neue-PSSession -HostName RemoteServer -Benutzername IhrBenutzer Enter-PSSession $session
So führen Sie einen einzelnen Remote-Befehl aus:
Invoke-Command -Session $session -ScriptBlock { Get-Process }
So geben Sie die Sitzung frei:
Entfernen-PSSession $session
Praxisbeispiele: von Windows zu Linux und umgekehrt
Stellen Sie sich vor, Sie haben eine Windows 11 und Sie möchten auf Ihren Ubuntu-Server zugreifen. Die Schritte wären:
- Öffnen Sie PowerShell in Windows.
- Er schreibt:
ssh IhrBenutzer@Ubuntu_IP
- Geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.
- Sie können jetzt Befehle auf Ihrem Remote-Server ausführen.
Der Vorgang ist identisch für Verbindungen zwischen Linux und Windows, indem Sie lediglich den Benutzer und den Zielcomputer ändern.
Dateiübertragung mit PowerShell und SSH
Ein weiterer sehr praktischer Nutzen ist die Verwendung von scp (sichere Kopie), die auch verfügbar ist in Windows mit OpenSSH und ermöglicht Ihnen die Übertragung von Dateien zwischen lokalen und Remotecomputern.
scp file.txt Benutzer@IP:/Pfad/Ziel/
Oder umgekehrt, vom Remote-Server herunterladen:
scp user@IP:/Pfad/Datei.txt ./
Nützliche PowerShell-Linux-Befehle und -Äquivalente
- ls / dir: Zeigt den Inhalt eines Verzeichnisses an
- CD: Ändern Sie das Verzeichnis auf dem Remote-Server
- rm / Remove-Item: Dateien oder Ordner löschen
- mv / Move-Item: Dateien verschieben oder umbenennen
- berühren / Neu-Artikel: Dateien erstellen
- Benutzer hinzufügen: Benutzer hinzufügen (unter Linux)
- scp: Kopieren Sie Dateien zwischen Computern
SSH-Schlüsselverwaltung für erweiterte Authentifizierung
Die Verwendung eines Passworts ist für den Anfang in Ordnung, aber die sicherste und praktischste ist eine auf öffentlichen Schlüsseln basierende Authentifizierung:
-
- Generieren Sie einen SSH-Schlüssel:
ssh-keygen
- Fügen Sie den öffentlichen Schlüssel zum Remote-Server hinzu: Kopieren Sie den Inhalt von id_rsa.pub (Linux) oder die generierte Datei in Windows zu ~/.ssh/authorized_keys auf dem Zielserver.
- Verwenden Sie optional ssh-agent, um mehrere Schlüssel zu verwalten:
- Generieren Sie einen SSH-Schlüssel:
ssh-add private_key_path
Auf diese Weise müssen Sie den Schlüssel nur beim ersten Mal eingeben oder gar nicht, wenn der SSH-Agent richtig konfiguriert ist.
Einschränkungen und wichtige Überlegungen
- Der sudo-Befehl Es ist in Remote-PowerShell-SSH-Sitzungen unter Linux nicht direkt verfügbar. Um privilegierte Befehle auszuführen, müssen Sie Alternativen oder spezielle Methoden finden.
- PowerShell-Profile ($PROFILE) werden nicht geladen automatisch während SSH-Sitzungen. Wenn Sie eines verwenden müssen, müssen Sie es nach dem Starten der Remote-Sitzung manuell laden.
- Plattformübergreifende Einschränkungen: Einige erweiterte Funktionen (wie Endpunktverwaltung oder JEA) werden nur von WinRM unterstützt, obwohl in Zukunft weitere Unterstützung unter SSH erwartet wird.
- Zweiter Sprung der Remote-Sitzungen: Vor PowerShell 7.1 war es nicht möglich, per SSH eine zweite Remote-Sitzung aus einer bereits aktiven Sitzung zu erstellen. Ab dieser Version ist dies nun möglich, wenn auch mit gewissen Einschränkungen.
Spezialisierte Verwendung: Switches, Netzwerkgeräte und REST-APIs
PowerShell kann sich per SSH mit Netzwerkgeräten wie Switches verbinden, um Befehle auszuführen. Dies hängt jedoch von den Fähigkeiten der Firmware und der SSH-Protokollunterstützung ab. Für komplexere Aufgaben bieten einige Hardwarehersteller REST-APIs an, die ebenfalls über PowerShell verwaltet werden können.
In vielen Fällen Die direkte Methode mit SSH ist die universellste Option, einfach und kompatibel für grundlegende Vorgänge auf dem Remotecomputer.
Alternativen zu OpenSSH? PuTTY und andere Clients
Obwohl OpenSSH jetzt integriert ist in Windows, Werkzeuge wie PuTTY sind weiterhin gültige Optionen, insbesondere wenn Sie eine grafische Benutzeroberfläche benötigen oder gespeicherte Verbindungen mit unterschiedlichen Konfigurationen und Schlüsseln verwalten möchten. Die direkte Integration mit PowerShell und Skripten macht OpenSSH jedoch zur bevorzugten Option für die meisten Benutzer und Automatisierungsaufgaben.
Was ist, wenn ich mit GitHub oder ähnlichen Plattformen arbeite?
Das Einrichten von SSH-Schlüsseln in PowerShell ist unerlässlich, wenn Sie Plattformen wie GitHubDas Verfahren besteht darin, den Schlüssel zu generieren, ihn dem Agenten hinzuzufügen und den öffentlichen Schlüssel in Ihre GitHub-Profileinstellungen zu kopieren. Sobald dies erledigt ist, können Sie sicher mit Ihren Repositories arbeiten, ohne jedes Mal das Passwort eingeben zu müssen.
Die Beherrschung von SSH in PowerShell eröffnet eine Welt voller Möglichkeiten zur Verwaltung und Automatisierung von Aufgaben, ob Sie Server verwalten Windows, Linux oder NetzwerkgeräteDank der nativen OpenSSH-Integration und der leistungsstarken PowerShell-Cmdlets ist die Steuerung von Remote-Systemen eine Sache von Minuten. Von der Erstinstallation und Konfiguration über Dateiübertragungen bis hin zur Ausführung komplexer Befehle kann jeder Benutzer seinen PC in ein echtes, sicheres und vielseitiges plattformübergreifendes Operations Center verwandeln.

Experten für Software, Entwicklung und Anwendungen für Industrie und Privatanwender. Wir lieben es, das volle Potenzial jeder Software, jedes Programms, jeder App, jedes Tools und jedes Betriebssystems auf dem Markt auszuschöpfen.
