Ejecute ssh con autenticación de contraseña a través del símbolo del sistema de Windows

93

Necesito ejecutar ssh desde la línea de comandos de Windows proporcionando la contraseña de una manera no interactiva. Podría implementar la autenticación basada en claves y poder ejecutar los comandos ssh como

ssh <user>@<host> <command>

¿Hay algún comando como

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

ingrese la descripción de la imagen aquí

No sé si es factible. Sin embargo, puede haber algunas soluciones para lo mismo. Tírame algunas ideas para lograr lo mismo.

Balachandar
fuente
2
Usar la autenticación basada en claves es una idea mucho mejor.
Greg Inozemtsev
1
Sí, también tengo un requisito para la autenticación basada en contraseña.
Balachandar
12
@GregInozemtsev, aunque ese es el caso, a veces surge la necesidad de un script rápido y sucio para hacer algo como esto, especialmente en un entorno de prueba u otro donde no se requiere seguridad pura.
TheJosh
No entiendo por qué falta esa opción básica. Estaba buscando el comando -pw superputty (putty) :( Supongo que me moveré a las teclas ssh en su lugar.
m3nda

Respuestas:

159

La utilidad sshpass está destinada exactamente a esto. Primero, instale sshpass escribiendo este comando:

sudo apt-get install sshpass

Luego anteponga su comando ssh / scp con

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

Este programa es más fácil de instalar cuando se usa Linux.

El usuario debe considerar usar la autenticación de clave pública más segura de SSH (con el sshcomando) en su lugar.

Anish Bhatt
fuente
8
También funciona para rsync.
TheJosh
15
Porque el título no incluye "ventanas" y se muestra alto en la lista cuando se busca para Linux / Unix / Mac. Entonces, responder a esta pregunta aquí ahorra tiempo.
Frobbit
1
Funcionó muy bien en Mac OS X. Instalé sshpass a través de sudo port install sshpass. Sin embargo, si hay un problema al iniciar sesión debido a algo más, sshpass tiende a fallar silenciosamente (sin mensaje de error). Así que depure el comando sin sshpassprimero; luego agregue sshpass -p blah(etc.).
RedRedSuit
5
Debe tener en cuenta que los comandos de shell ejecutados se almacenan (por ejemplo, en '.bash_history') ..
Benjamin
5
Anish: el autor pidió Windows, le diste la opción de Linux.
arka.b
24

¿Qué pasa con este guión de espera?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
Illarion Kovalchuk
fuente
Dice que no tengo el guión esperado
Sameer Sawla
expectes notoriamente subestimado!
Frerich Raabe
5

Solución de Windows

  1. Instalar PuTTY
  2. prensa Windows-Key + R
  3. Entrar putty.exe -ssh [username]@[hostname] -pw [password]
optimiertes
fuente
2

Solución PowerShell

Usando 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
Owain Esaú
fuente