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.
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.
Antworten:
Natürlich nicht eingebaut, aber da Powershell alles kann, was .Net kann, gibt es einen Weg.
Bezahlte Lösung wären die NetCmdlets von / n Software.
Kostenlose Lösung wäre die Verwendung der Vorschläge dieses Blog-Beitrags.
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
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.
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.
Es gibt eine alternative (kostenlose) PowerShell-SSH-Lösung mit einer neueren Bibliotheksimplementierung (siehe vBlog >> SSH-Client mit PowerShell)
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?).
http://www.powershellinside.com/powershell/ssh/ Kostenlos für den persönlichen Gebrauch.
Ich benutze Git http://git-scm.com/downloads
Beinhaltet eine Vielzahl anderer Tools wie SCP und solche, die ebenfalls nützlich sind.
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")
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.
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.