Script que "digite" la contraseña al ejecutar ssh ?

Germán Póo-Caamaño gpoo en calcifer.org
Dom Abr 3 19:22:32 CLST 2011


On Sun, 2011-04-03 at 16:36 -0500, Ovidio Martínez Barco wrote:
> Un saludo para todos...
> 
> Es para pedirles un gran favor,  Necesito hacer un script en Linux que se
> loguee de forma automática de una maquina linux a otra maquina con ssh.
> 
> Como puedo conseguir que el script "digite la contraseña como lo haría yo"
> cuando la maquina remota la pida al ejecutar la instrucción :
>        ssh usuario en 10.0.0.1
> 
> He intentado cosas como esto
>        ssh usuario en 10.0.0.1  <  "claveMaquinaRemota"        pero no
> funciona!

Utiliza el paquete sshpass.  Con la opción -f le puedes decir que use un
archivo en donde se encuentra la contraseña.

Otra alternativa podría ser con expect.

Sin embargo, lo que intentas hacer es muy mala práctica, porque guardas
la contraseña en texto plano.

> Nota:  No quiero utilizar el truco de generar la clave "ssh-keygen -t rsa" y
> copiarla en la maquina remota para que le permita al script entrar sin pedir
> clave cuando de ssh usuario en 10.0.0.1

¿Algún motivo por el cual no querer utilizar este método que es mucho
más seguro de lo que pretendes hacer?

Si lo que quieres es ejecutar un script/tarea remota en forma
programada, entonces utilizar una llave sin clave es mucho más seguro (o
puedes crear una nueva) y en donde en el otro extremo limitas a la
ejecución del script que tienes en mente.  Por ejemplo, para la llave
púbica puedes añadir algo al inicio como:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/a/script",from="IPADDRESS" &"

Si lo que quieres es ingresar con tu cuenta y trabajar en modo
interactivo, y evitar la lata de ingresar la contraseña, entonces usa
ssh-agent, el que te preguntará la contraseña sólo la primera vez en la
sesión.

-- 
Germán Póo-Caamaño
http://www.calcifer.org/



Más información sobre la lista de distribución Linux