Esegui ssh con l'autenticazione della password tramite il prompt dei comandi di Windows


93

Devo eseguire ssh dalla riga di comando di Windows fornendo la password in modo non interattivo. Potrei implementare l'autenticazione basata su chiave e in grado di eseguire i comandi ssh proprio come

ssh <user>@<host> <command>

Ci sono comandi come

ssh <user>@<host> -P <password> <command>

inserisci qui la descrizione dell'immagine

Non so se sia fattibile. Tuttavia, ci può essere qualche soluzione per lo stesso. Dammi alcune idee per ottenere lo stesso risultato.


2
L'uso dell'autenticazione basata su chiave è un'idea molto migliore.
Greg Inozemtsev

1
Sì, ho anche un requisito per l'autenticazione basata su password.
Balachandar

12
@GregInozemtsev mentre è così, a volte nasce la necessità di uno script veloce e sporco per fare qualcosa di simile, specialmente in un ambiente di test o in un altro ambiente in cui non è richiesta la sicurezza pura.
TheJosh

Non capisco perché manca questa opzione di base. Stavo cercando il comando -pw superputty (putty) :( Immagino che invece
passerò

Risposte:



159

L' utilità sshpass serve esattamente per questo. Innanzitutto, installa sshpass digitando questo comando:

sudo apt-get install sshpass

Quindi anteponi il comando ssh / scp con

sshpass -p '<password>' <ssh/scp command>

Questo programma è più semplice da installare quando si utilizza Linux.

L'utente dovrebbe prendere in considerazione l'utilizzo dell'autenticazione con chiave pubblica più sicura di SSH (con il sshcomando).


8
Funziona anche per rsync.
TheJosh

15
Perché il titolo non include "finestre" e viene visualizzato in alto nell'elenco quando si cerca questo per Linux / Unix / Mac. Quindi, rispondere a questa domanda qui fa risparmiare tempo.
Frobbit

1
Ha funzionato alla grande in Mac OS X. Ho installato sshpass tramite sudo port install sshpass. Tuttavia, se si verifica un problema di accesso a causa di qualcos'altro, sshpass tendeva a fallire silenziosamente (nessun messaggio di errore). Quindi esegui il debug del comando senza sshpassprima; quindi aggiungi sshpass -p blah(ecc.).
RedRedSuit

5
Dovresti essere consapevole che i comandi della shell eseguiti vengono memorizzati (ad esempio in ".bash_history") ..
Benjamin

5
Anish - L'autore ha chiesto Windows, tu hai dato l'opzione per Linux.
arka.b

24

Che mi dici di questo copione previsto?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact

Dice che non ho il copione previsto
Sameer Sawla

expectè notoriamente sottovalutato!
Frerich Raabe

5

Soluzione Windows

  1. Installa PuTTY
  2. stampa Windows-Key + R
  3. accedere putty.exe -ssh [username]@[hostname] -pw [password]

2

Soluzione PowerShell

Utilizzando Posh-SSH:

New-SSHSession -ComputerName 0.0.0.0 -Credential $cred | Out-Null
Invoke-SSHCommand -SessionId 1 -Command "nohup sleep 5 >> abs.log &" | Out-Null
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.