SSH über PowerShell


54

Ist es möglich, eine SSH-Sitzung in PowerShell zu öffnen? Derzeit benutze ich PuTTY, aber es wäre schön, wenn das nicht erforderlich wäre.


1
Ich weiß, dass es nicht von Haus aus unterstützt wird, aber ich würde gerne eine Lösung finden.
egorgry

5
Was ist falsch daran, nur putty.exe (oder plink.exe) über die Befehlszeile aufzurufen?
Javier

4
Javier: Beginnen wir damit, dass plink nur ein SSH-Client ist und die Terminalemulationsfunktionen vollständig fehlen.
Grawity

+1, ich würde gerne selbst eine Lösung sehen. Und zum größten Teil hasse ich Kitt so sehr. (SecureCRT-Benutzer)
Urda

1
Microsoft kündigt zukünftige Unterstützung für SSH an: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw.

Antworten:



9

Ich habe ein Modul für SSH-Sitzungen von PowerShell geschrieben, das auf der SSH.NET-Bibliothek von CodePlex basiert. Es verfügt über New-SshSession zum Erstellen von Verbindungen (mehrere Ziele mit unterschiedlichen Anmeldeinformationen werden unterstützt). Anschließend können Sie mit Invoke-SshCommand Befehle für eine beliebige Anzahl von Zielhosts ausführen. Es gibt sogar eine Enter-SshSession mit einer sehr einfachen, interaktiven Shell.

Der Artikel ist hier .

Joakim


6

Laden Sie OpenSSH für Windows herunter und installieren Sie während der Installation nur den Client. Das gesamte Installationsprogramm, einschließlich des Servers, hat weniger als 3 MB und der Client funktioniert einwandfrei.


2
In diesem Projekt gibt es viele Warnungen, dass der Installer die System PATH-Variable unter Windows 7 und 8 stampft - seien Sie vorsichtig!
Patrick M

2

Ich poste immer noch eine Antwort auf diese Frage, da ich die akzeptierte Antwort überhaupt nicht für meine Bedürfnisse fand (nur eine bezahlte Lösung oder eine andere, die das Terminal nicht gut handhabt).

Die naheliegende Lösung für dieses Problem ist die Installation von cygwin. Mache eine minimale Installation, wenn du nur ssh willst, aber da Powershell ein grundlegendes Maß an Kompatibilität mit * nix-Shells bietet (es gibt immer noch grundlegende Befehle, "/" für Verzeichnisse usw.), ist es wirklich möglich, Cygwin-Zeug in Powershell zu verwenden.

Cygwin hier installieren


1
Cygwin? Bleck! Könnte auch eine VM starten ...
Urda

Wie ? ssh ist eine mit Windows kompilierte ausführbare Datei. Wenn Sie nicht mit Unix-y-Sachen zusammenarbeiten möchten, sollte es keine Überraschung sein, dass Sie dafür einige Bibliotheken installieren müssen.
raph.amiard

Siehe die Antwort von Ameer Deen, ich denke, das ist die beste Lösung hier und funktioniert großartig.
Hosh Sadiq

1
@HoshSadiq Beschreibung von OpenSSH für Windows: "Ein Installationsprogramm für eine Minimalinstallation der Cygwin-Umgebung, die zum Ausführen eines OpenSSH-Servers auf der Windows-Plattform geeignet ist."
Douglas Ludlow


1

Wenn der Zielcomputer eine Windows-Box ist, können Sie stattdessen PowerShell Remoting verwenden.

Es ist definitiv nicht dasselbe wie SSH. Es gibt Vor- und Nachteile (Objekte über die Leitung zurückbringen!) Und Nachteile (Was ist, wenn das Ziel Linux ist?).




1

Eine Möglichkeit, einen sehr guten nativen ssh-Client zu erhalten, besteht darin, Git von GitHub ( https://windows.github.com/ ) zu installieren .

Es wird eine Verknüpfung zu einem noblen Git-Fenster erstellt, in dem alle Pfade richtig eingestellt sind, um Git in Powershell zu verwenden. Das kommt automatisch mit ssh- und scp-Binärdateien im Pfad.

Ich bin mir nicht sicher, um welche Implementierung es sich handelt, aber es fühlt sich wie Linux an, dh es fühlt sich nicht so an, als ob es auf .NET basiert oder PowerShell-Kommandos verwendet.

Es hebt den privaten Schlüssel auf, den ich in $ home / .ssh / im openssh-Format konfiguriert habe, und vielleicht kann jemand das bestätigen. Es fühlt sich an wie OpenSh.

Um es noch besser zu machen, habe ich es in mein reguläres Powershell-Profil integriert. Das bedeutet, dass ich nicht die Abkürzung von Github verwenden muss.

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") . (Resolve-Path "$env:LOCALAPPDATA\GitHub\PoshGit_*\profile.example.ps1")


1

Posh-SSH ist ein kostenloses Modul des Poswershell Magazine, das für Powershell 3.0 und höher geeignet ist.

Es ist verfügbar unter http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

Die vollständige Dokumentation finden Sie unter dem obigen Link. In einem Skript möchten Sie eigentlich keine interaktiven Verbindungen, es sind also zwei Schritte. 1. Erstellen Sie die Sitzung. 2. Befehle senden.

$ServerConnection = New-SSHSession -KeyFile $keyLocation -ComputerName $sshComp -Credential $mycreds -AcceptKey

Die erste Sitzung, die Sie erstellen, hat einen Index von 0.

Invoke-SSHCommand -Index 0 -Command "some command to run over ssh"

Es wird empfohlen, die Verbindungserstellung in einen Try-Catch zu versetzen und zu überprüfen, ob die Sitzung existiert, bevor ein Befehl ausgeführt wird. Auf diese Weise funktioniert die Interaktion mit Linux-Servern innerhalb eines Powershell-Skripts problemlos.


-2

SSH und SFTP stellen zweifellos den Industriestandard für sichere Remotezugriffsanwendungen dar. Glücklicherweise ist es möglich, dass das Herstellen einer Verbindung sehr schnell und einfach geht. Leider ist die Wahrheit, dass es viele Möglichkeiten gibt, Zeit mit der Fehlersuche zu verschwenden.

Leider hat Windows keinen Standard-SSH-Client oder keine Deamon-Software an Bord.

Dies führt zu einem Zoo von mehr oder weniger ausgeflippten Implementierungen, Open Source, Freeware, Shareware und so weiter ... manchmal funktioniert das manchmal nicht.

In Fenstern ist es eine Geldsache. Microsoft möchte einfach nicht, dass viele Benutzer auf einfache Weise eine Verbindung zu einem lizensierten Computer herstellen. Sie wollen ihre eigenen Lösungen verkaufen. Daher bieten sie kein natives SSL an.

cygwin ist die beste verfügbare Lösung.

Kitt / Plink / Winscp als Client-Software. Es ist auch in Ordnung für Skripte.

Es gibt SSH-Deamons für die Windows-Integration, aber die Lösungen sind mehr oder weniger instabil.

Die stabilste Möglichkeit, ssh deamon unter Windows laufen zu lassen, besteht darin, es in einer Linux-VM auszuführen. Dies kann mit einer kleinen Linux-Distribution realisiert werden.


4
Dies beantwortet die Frage des OP nicht wirklich . Können Sie Ihre Frage bearbeiten, um anzugeben, warum Cygwin eine Lösung für die vom OP gestellte Frage ist?
Ich sage Reinstate Monica

OP fordert keine anderen Alternativen als PowerShell-bezogene Lösungen.
Cychoi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.