SSH przez PowerShell

54

Czy można otworzyć sesję SSH w PowerShell? Obecnie używam PuTTY, ale byłoby miło, gdyby nie były wymagane.

północny zachód.
źródło
1
Wiem, że nie jest to obsługiwane natywnie, ale chciałbym też znaleźć rozwiązanie.
egorgry
5
co jest nie tak po prostu wywołując putty.exe (lub plink.exe) z wiersza poleceń?
Javier
4
Javier: Zacznijmy od tego, że plink jest tylko klientem SSH i całkowicie brakuje mu funkcji emulacji terminala.
grawitacja
+1, sam chciałbym zobaczyć rozwiązanie. I w większości nienawidzę kitu. (Użytkownik SecureCRT)
Urda
1
Microsoft ogłasza przyszłe wsparcie dla SSH: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw.

Odpowiedzi:

9

Napisałem moduł do obsługi sesji SSH z PowerShell, oparty na bibliotece SSH.NET znalezionej w CodePlex. Ma New-SshSession do tworzenia połączeń (obsługiwanych jest wiele obiektów docelowych przy użyciu różnych poświadczeń), a następnie można użyć Invoke-SshCommand do uruchamiania poleceń na dowolnej liczbie hostów docelowych. Istnieje nawet Enter-SshSession, która ma bardzo podstawową, interaktywną powłokę.

Artykuł jest tutaj .

Joakim

Joakim
źródło
6

Pobierz OpenSSH dla Windows i wybierz instalację tylko klienta podczas instalacji. Cały instalator zawierający serwer ma mniej niż 3 MB, a klient działa dobrze.

Ameer Deen
źródło
2
W tym projekcie jest wiele ostrzeżeń o tym, że instalator tupie zmienną System PATH w Windows 7 i 8 - bądź ostrożny!
Patrick M
2

Nadal wysyłam odpowiedź na to pytanie, ponieważ uznałem, że zaakceptowana odpowiedź w ogóle nie odpowiada moim potrzebom (tylko płatne rozwiązanie lub inne, które nie radzi sobie dobrze z terminalem).

Oczywistym rozwiązaniem tego problemu jest zainstalowanie programu cygwin. Wykonaj minimalną instalację, jeśli chcesz tylko ssh, ale ponieważ PowerShell zapewnia podstawowy poziom kompatybilności z powłokami * nix (podstawowe polecenia wciąż tam są, „/” dla katalogów itp.), Naprawdę można używać rzeczy cygwin w Powershell.

Zainstaluj Cygwin tutaj

raph.amiard
źródło
1
Cygwin? Bleck! Równie dobrze może odpalić
maszynę
Jak to ? ssh to plik wykonywalny skompilowany z systemem Windows. Jeśli nie chcesz współpracować z uniksowymi rzeczami, nie powinno być zaskoczeniem, że musisz do tego zainstalować kilka bibliotek.
raph.amiard
Zobacz odpowiedź Ameer Deen, myślę, że to najlepsze rozwiązanie tutaj i działa świetnie.
Hosh Sadiq
1
@HoshSadiq Z opisu OpenSSH dla Windows: „Instalator do minimalnej instalacji środowiska Cygwin odpowiedni do uruchamiania serwera OpenSSH na platformie Windows”.
Douglas Ludlow
1

Jeśli maszyną docelową jest okno systemu Windows, możesz zamiast tego użyć narzędzia PowerShell Remoting .

To zdecydowanie nie to samo, co SSH. Są plusy (sprowadzanie obiektów z powrotem przez drut!) I wady (a jeśli celem jest Linux?).

Jay Bazuzi
źródło
1

Korzystam z Git http://git-scm.com/downloads

Zawiera wiele innych narzędzi, takich jak SCP i takie, które są również przydatne.

Justin
źródło
1

Jednym ze sposobów uzyskania bardzo dobrego natywnego klienta ssh jest zainstalowanie git z GitHub ( https://windows.github.com/ ).

Tworzy skrót do szykownego okna z wszystkimi ścieżkami ustawionymi poprawnie, aby używać git w PowerShell. To automatycznie pochodzi z plików binarnych ssh i scp na ścieżce.

Nie jestem pewien, co to jest za implementacja, ale działa jak Linux, tzn. Nie wydaje się być oparty na .Net lub używa komend PowerShell.

Odbiera klucz prywatny, który skonfigurowałem w $ home / .ssh / w formacie openssh i może ktoś może to potwierdzić. Wydaje się, że to openssh.

Aby było jeszcze lepiej, zintegrowałem go z moim zwykłym profilem PowerShell, wykonując następujące czynności w moim profilu $. Oznacza to, że nie muszę używać skrótu github.

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

Devang Mehta
źródło
1

Posh-SSH to darmowy moduł z Poswershell Magazine, który działa dla Powershell 3.0 i nowszych wersji.

Jest dostępny na stronie http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

Pełna dokumentacja znajduje się pod linkiem powyżej. W skrypcie tak naprawdę nie chcesz połączeń interaktywnych, więc są to dwa kroki. 1. utwórz sesję. 2. wysyłanie poleceń.

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

Pierwsza utworzona sesja będzie miała indeks 0.

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

Najlepszą praktyką jest umieszczenie tworzenia połączenia w try catch i sprawdzenie, czy sesja istnieje przed uruchomieniem polecenia. To sprawia, że ​​interakcja z serwerami Linux z poziomu skryptu PowerShell działa dobrze.

Eric
źródło
-2

SSH i SFTP stanowią niewątpliwie standard branżowy w zakresie bezpiecznych aplikacji do zdalnego dostępu. Na szczęście możliwe jest, że nawiązanie połączenia może być naprawdę szybkie i łatwe. Niestety prawda jest taka, że ​​istnieje wiele możliwości marnowania czasu na rozwiązywanie problemów.

Niestety system Windows nie ma na pokładzie standardowego klienta ssh ani oprogramowania deamon.

Powoduje to zoo mniej lub bardziej dziwacznych implementacji, open source, freeware, shareware i tak dalej ... czasem coś nie działa.

W oknach jest to kwestia pieniędzy. Microsoft po prostu nie chce, aby wielu użytkowników łatwo łączyło się z 1 lizenizowanym komputerem. Chcą sprzedawać własne rozwiązania. Więc nie oferują natywnego ssl.

cygwin to najlepsze dostępne rozwiązanie.

putty / plink / winscp jako oprogramowanie klienckie. jest również w porządku dla skryptów.

istnieją diagramy ssh do integracji z systemem Windows, ale rozwiązania są mniej lub bardziej niestabilne.

najbardziej stabilnym sposobem na uruchomienie ssh deamon przy uruchamianiu windwos jest uruchomienie go w maszynie wirtualnej systemu Linux, co można zrealizować przy niewielkiej dystrybucji linuksa.

Zuse68
źródło
4
To tak naprawdę nie odpowiada na pytanie PO. Czy możesz edytować swoje pytanie, aby wskazać, dlaczego cygwin jest rozwiązaniem pytania postawionego przez PO?
Mówię: Przywróć Monikę
OP nie prosi o alternatywy inne niż rozwiązania związane z PowerShell.
szczegółowooi