¿Puede establecer contraseñas en .ssh/config para permitir el inicio de sesión automático?

Estoy usando Ubuntu 11.10. I'm usando ssh para conectarse a muchos servidores diariamente, así que puse sus parámetros en el archivo .ssh/config así:

Host Home
User netmoon
Port 22
HostName test.com

¿Hay alguna forma de poner contraseñas para cada conexión en este fichero, de forma que, cuando el servidor pida la contraseña, el terminal introduzca su contraseña y la envíe al servidor?

Lo necesito porque a veces me alejo del PC y cuando vuelvo, tecleo una contraseña y pulso Enter el terminal dice CONEXIÓN CERRADA.

P.D. No quiero usar un par de claves pública/privada.

Si realmente no quieres usar un par de claves pública/privada, puedes escribir un script expect para que introduzca la contraseña por ti automáticamente dependiendo de la dirección de destino.

Edit: Lo que quiero decir es que puedes tener un script que, por un lado, use expect para introducir la contraseña por ti y, por otro lado, lea la contraseña para un usuario y host dados desde un fichero de configuración. Por ejemplo, el siguiente script python funcionará para el escenario del día soleado:

#!/usr/bin/python                                                                                                                        
import argparse
from ConfigParser import ConfigParser
import pexpect

def main(args):
    url = args.url
    user, host = url.split('@', 1)

    cfg_file = 'ssh.cfg'
    cfg = ConfigParser()
    cfg.read(cfg_file)
    passwd = cfg.get(user, host)

    child = pexpect.spawn('ssh {0}'.format(url))
    child.expect('password:')
    child.sendline(passwd)
    child.interact()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Run ssh through pexpect')
    parser.add_argument('url')
    args = parser.parse_args()
    main(args)

y el formato del fichero de configuración sería el siguiente:

[user_1]
host1 = passwd_1
host2 = passwd_2

[user_2]
host1 = passwd_1
host2 = passwd_2

Nota: Como se ha explicado, el script python necesitaría ser mucho más complejo para manejar todos los posibles errores y mensajes de pregunta de ssh y todas las posibles URLs (en el ejemplo se asume que será algo como user@host, pero la parte del usuario no se usa la mayoría de las veces), pero la idea básica seguiría siendo la misma. Respecto al fichero de configuración, puedes usar un fichero de configuración diferente o usar .ssh/config y escribir tu propio código para analizar ese fichero y obtener la contraseña para un usuario y host dados.

Comentarios (4)

No. Me temo que no es posible.

La única alternativa real es utilizar claves privadas, pero usted ha dicho que no quiere (¿por qué no?).

Comentarios (6)

La respuesta de @BrunoPereira a esta pregunta muestra un método alternativo para conectarse sin introducir explícitamente una contraseña y evitando las claves ssh.

Podrías crear un script, un alias o una función en tu ~/.bashrc para ejecutar rápidamente ese comando.

Obviamente, hay consideraciones de seguridad que debes tener en cuenta con este enfoque.

Comentarios (1)