Si realmente no desea utilizar un par de claves pública / privada, puede escribir un expect
script para ingresar la contraseña automáticamente según la dirección de destino.
Editar: lo que quiero decir es que puede tener una secuencia de comandos que, por un lado, utiliza expect
para ingresar la contraseña y, por otro lado, lee la contraseña de un usuario y host desde un archivo de configuración. Por ejemplo, el siguiente script de Python funcionará para el escenario de 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 archivo 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 explicó, la secuencia de comandos de Python debería ser mucho más compleja para manejar todos los posibles errores y mensajes de preguntas de ssh y todas las URL posibles (en el ejemplo se supone que será algo así user@host
, pero la parte del usuario no es ' t utilizado la mayoría de las veces), pero la idea básica seguiría siendo la misma. Con respecto al archivo de configuración, puede usar un archivo de configuración diferente o usar .ssh/config
y escribir su propio código para analizar ese archivo y obtener la contraseña para un usuario y host determinados.