SSH tramite PowerShell


54

È possibile aprire una sessione SSH in PowerShell? Attualmente uso PuTTY ma sarebbe bello se ciò non fosse necessario.


1
So che non è supportato nativamente, ma mi piacerebbe vedere anche una soluzione.
egorgry, il

5
cosa c'è di sbagliato nel chiamare semplicemente putty.exe (o plink.exe) dalla riga di comando?
Javier,

4
Javier: Cominciamo con il plink che è solo un client SSH e manca completamente delle funzionalità di emulazione del terminale.
gravità

+1, mi piacerebbe vedere una soluzione da solo. E per la maggior parte odio lo stucco così tanto. (Utente SecureCRT)
Urda,

1
Microsoft annuncia il futuro supporto per SSH: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw.

Risposte:



9

Ho scritto un modulo per gestire le sessioni SSH da PowerShell, basato sulla libreria SSH.NET disponibile su CodePlex. Ha New-SshSession per creare connessioni (sono supportate più destinazioni utilizzando credenziali diverse), quindi è possibile utilizzare Invoke-SshCommand per eseguire comandi su qualsiasi numero di host di destinazione. C'è anche un Enter-SshSession che ha una shell interattiva di base.

L'articolo è qui .

Joakim


6

Scarica OpenSSH per Windows e scegli di installare solo il client durante l'installazione. L'intero programma di installazione incluso il server è inferiore a 3 MB e il client funziona perfettamente.


2
Ci sono molti avvertimenti su quel progetto riguardo al programma di installazione che calpesta la variabile PATH di sistema su Windows 7 e 8 - diffidare!
Patrick M,

2

Sto ancora pubblicando una risposta a questa domanda, perché ho trovato la risposta accettata non adatta alle mie esigenze (solo una soluzione a pagamento o un'altra che non gestisce bene il terminale).

Quindi la soluzione ovvia a questo problema è installare cygwin. Esegui un'installazione minima se vuoi solo ssh, ma poiché powershell fornisce un livello base di compatibilità con le shell * nix (i comandi di base sono ancora lì, "/" per le directory, ecc.), È davvero possibile usare roba cygwin all'interno di Powershell.

Cygwin installa qui


1
Cygwin? Bleck! Potrebbe anche accendere una VM ...
Urda,

Come mai ? ssh è un eseguibile compilato di Windows. Se non vuoi interagire con roba unix-y, non dovrebbe essere una sorpresa che devi installare alcune librerie per questo.
raph.amiard

Vedi la risposta di Ameer Deen, penso che sia la soluzione migliore qui e funzioni alla grande.
Hosh Sadiq,

1
@HoshSadiq Dalla descrizione di OpenSSH per Windows: "Un programma di installazione per un'installazione minima dell'ambiente Cygwin adatto all'esecuzione di un server OpenSSH sulla piattaforma Windows."
Douglas Ludlow,


1

Se il computer di destinazione è una finestra di Windows, è possibile utilizzare invece Remoting di PowerShell .

Non è assolutamente lo stesso di SSH. Ci sono pro (riportare oggetti sul filo!) E contro (e se il target fosse Linux?).




1

Un modo per ottenere un ottimo client ssh nativo è installare git da GitHub ( https://windows.github.com/ ).

Crea un collegamento a una finestra posh-git con tutti i percorsi impostati correttamente per usare git in PowerShell. Ciò viene fornito automaticamente con i binari ssh e scp nel percorso.

Non sono sicuro di quale sia l'implementazione, ma ha un aspetto simile a Linux, cioè non sembra che sia basato su .Net o usa i comandi di PowerShell.

Sta raccogliendo la chiave privata che ho configurato nel formato $ home / .ssh / in openssh e forse qualcuno può confermare. Sembra che sia openssh.

Per renderlo ancora migliore, l'ho integrato nel mio normale profilo PowerShell effettuando quanto segue nel mio profilo $. Ciò significa che non devo usare la scorciatoia di Github.

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


1

Posh-SSH È un modulo gratuito di Poswershell Magazine che funziona con Powershell 3.0 e versioni successive.

È disponibile su http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

La documentazione completa è fornita al link sopra. In uno script non vuoi davvero connessioni interattive, quindi sono due passaggi. 1 ° creare la sessione. 2o comando di invio.

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

La prima sessione creata avrà un indice di 0.

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

È consigliabile mettere la creazione della connessione in un tentativo try e convalidare la sessione esistente prima di eseguire un comando. In questo modo l'interazione con i server Linux dall'interno di uno script PowerShell funziona bene.


-2

SSH e SFTP rappresentano senza dubbio gli standard del settore nell'applicazione di accesso remoto sicuro. Fortunatamente è possibile che stabilire una connessione sia davvero semplice e veloce. Purtroppo la verità è che ci sono molte possibilità di perdere tempo con la risoluzione dei problemi.

Sfortunatamente Windows non ha a bordo un client ssh standard o un software Deamon.

Ciò si traduce in uno zoo di implementazioni più o meno bizzarre, open source, freeware, shareware e così via ... a volte a volte non funziona.

All'interno di Windows, è una cosa da soldi. Microsoft non vuole che molti utenti si connettano facilmente a 1 computer con licenza. Vogliono vendere le proprie soluzioni. Quindi non offrono nativi SSL.

cygwin è la migliore soluzione disponibile.

putty / plink / winscp come software client. va bene anche per gli script.

ci sono demoni ssh per l'integrazione di Windows, ma le soluzioni sono più o meno instabili.

il modo più stabile per avere ssh deamon su windwos in esecuzione è eseguirlo all'interno di una VM Linux, può essere realizzato con una piccola distribuzione Linux.


4
Questo in realtà non risponde alla domanda dei PO. Puoi modificare la tua domanda per indicare perché cygwin è una soluzione alla domanda posta dal PO?
Dico Reintegrare Monica il

OP non richiede alternative diverse dalle soluzioni correlate a PowerShell.
cychoi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.