Pregunta

¿Cómo puedo usar esperar enviar una contraseña a una conexión ssh?

decir que la contraseña era p @ ssword y el comando ssh era ssh me@127.0.0.1

¿Qué haría con esperar que ingrese la contraseña cuando dice

contraseña de me@127.0.0.1:
?

La acción correcta de usar un par de claves SSH no es una opción porque tendría que usar ssh (scp) para colocar la clave en el servidor, lo que solicitaría una contraseña.

¿Fue útil?

Solución

Siempre usé el " apropiado " solución, pero solía esperar en otras situaciones.

Aquí encontré la siguiente sugerencia:

#!/usr/local/bin/expect
spawn  sftp  -b cmdFile user@yourserver.com
expect "password:"
send "shhh!\n";
interact

Otros consejos

¿No sería más fácil usar la autenticación de clave pública y usar una clave sin frase de contraseña?

Como el usuario en la máquina fuente haga esto para hacer una clave RSA

ssh-keygen -t rsa

Ahora copie ~ / .ssh / id_rsa.pub a la máquina de destino y añádalo al archivo autorizado_keys del usuario de destino

Su manera más rápida de avanzar (a menos que quiera convertirse en un experto en Tcl, lo cual sería ... inusual ... en 2009) es probablemente usar autoexpect . Aquí está la página del manual:

http://expect.nist.gov/example/autoexpect.man.html

En resumen, encienda autoexpect , ejecute su sesión ssh, termine lo que necesita hacer, deje de autoexpect y luego golpee el teclado sobre el desorden resultante hasta que funcione :) Estoy asumiendo no necesita nada más que un truco rápido para ordenar sus llaves y luego, bueno, parece que ya conoce el puntaje con eso.

Y hay esta pregunta que ya contiene un ejemplo cercano a lo que busca.

Cygwin tiene autoexpect simplemente no en el paquete bin. ejecute setup.exe y busque esperar y marque la casilla de verificación de origen. verá el árbol resultante en / usr / src y allí hay un directorio wait / expect / examples. allí vive una copia del guión de autoexpect.

La solución de clave no funcionará ... porque las claves deben ser legibles solo por la persona que ejecuta ssh. En xp no puede crear una estructura clave con los permisos correctos. Entonces ssh no los leerá. Esto puede haber cambiado, pero la última vez que lo revisé todavía no funciona.

Estoy bastante seguro de que no es posible hacer lo que intentas hacer. La mayoría de las aplicaciones * nix que solicitan una contraseña leen directamente desde el TTY, no stdin, por lo que no puede canalizar la contraseña. Puede, como otros han mencionado, configurar SSH para que no solicite una contraseña, como se explica aquí .

Después de que fui rechazado sin razón aparente, fui e investigué un poco más sobre el comando esperar y descubrí que tiene un comando send_tty que envía a / dev / tty en lugar de stdin, que en realidad podría hacer lo que quieras ... Anteriormente no estaba al tanto de esta característica. Sin embargo, todavía recomiendo poner la clave en el servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top