Ubuntu 10.04 usando ssh sin ingresar mi contraseña

1

Sé que preguntas como esta se han hecho antes, y las he leído todas (que encontré).

El problema que tengo es que tenemos un dispositivo Linux incorporado en el que podemos iniciar sesión para fines de depuración haciendo lo siguiente:

ssh root@name

Entonces la contraseña es cualquier cosa (generalmente presiono enter). No quiero cambiar nada en el dispositivo embebido / linux. Pero sí quiero poder (como parte de mi script) ssh en él.

Mi investigación me ha demostrado que se puede usar lo siguiente (esto se copia de otra publicación):

#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact

Sin embargo, con mi versión de Ubuntu (10.04) no tengo spawn o envío de comandos. Pude instalar el comando "esperar" con sudo apt-get install expect.

¿Alguien tiene una solución? ¿Es posible instalar estos comandos o hay otra forma de ssh y superar el paso de "contraseña"?

Gracias :)

------------- EDITAR -----------------

Creo que estoy empezando a entender el problema que estoy teniendo. Tengo un script que comienza con:

#!/bin/bash

Luego más tarde estoy tratando de hacer:

spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact

No me di cuenta de que necesitabas explícitamente:

#!/usr/bin/expect -f

Al comienzo del guión. así que tuve que mover mi código a un archivo separado que contiene solo y exactamente:

#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact

... perdón por la mala comprensión de mi parte, pero las respuestas de las personas me ayudaron a explicar lo que estaba haciendo. Esto no es ideal para mí, ya que quería pasar parámetros para abrir diferentes conexiones ssh y no puedo pasar parámetros a este script que comience con "expect -f" :(

code_fodder
fuente
2
¿Hay alguna razón por la que no pueda usar una clave ssh? ¿Como no poder escribir en / root? Si no, por favor lea esto .
Hennes
y el engendro y el envío son cmds internos para esperar. Una vez que lo tenga instalado correctamente, debería poder ejecutar el script anterior. Buena suerte.
Shellter
@Hennes En realidad, en este caso "sí" hay una razón por la que no puedo hacer eso. El sistema de archivos linux incrustado es de solo lectura (continuado). Aunque puedo desbloquear esto, todo se
sobrescribirá cuando instalemos
Espero tanto cuando leo "incrustado". De lo contrario, simplemente habría comentado "Actualícelo a algo más moderno y use las teclas ssh". (P: ¿Sobrescrito como leído desde flash y desempacado en RAM o FS de unión?)
Hennes
@shellter Hmm ... como mencioné, sudo apt-get install wait. Pero enviar todavía no funciona. Me sale un error como program 'send' can be found in the following packages: mailutils-mh, nmh. ¿Qué estoy haciendo mal allí?
code_fodder

Respuestas:

2

Creo que estás intentando ejecutar tu script como un script de shell. Después de la instalación expect, ejecute su script de esta manera:

expect -f scrip.exp

Si no puede instalar expectativa como usuario normal, intente instalar sus binarios en uno de sus directorios, por $HOMEejemplo, $HOME/opt/y llame expectdesde allí, aunque dependería de su sistema de cómo podría manipular LD_LIBRARY_PATHpara agregar otro directorio para buscar bibliotecas dinámicas.

Un ejemplo de esperar incrustado:

#!/bin/bash

USER=$1
SERVER=$2
PASSWORD=$3

expect <<EOF
spawn ssh "${USER}@${SERVER}"
expect "assword:"
send "${PASSWORD}\r"
interact
EOF

Corre con

bash script.sh user server password
konsolebox
fuente
Gracias por eso, su respuesta me ayudó a entender lo que estaba haciendo mal. Por favor vea mi edición.
code_fodder
@code_fodder Por favor vea mi actualización.
konsolebox