Estoy trabajando en una secuencia de comandos que activa una nueva instancia de EC2 con boto y utiliza el cliente Paramiko SSH para ejecutar comandos remotos en la instancia. Por alguna razón, el cliente paramiko es tetrapléjico para conectar, me sale el error:Problemas al intentar SSH en una nueva instancia de EC2 con Paramiko
Traceback (most recent call last):
File "scripts/sconfigure.py", line 29, in <module>
ssh.connect(instance.ip_address, username='ubuntu', key_filename=os.path.expanduser('~/.ssh/test'))
File "build/bdist.macosx-10.3-fat/egg/paramiko/client.py", line 291, in connect
File "<string>", line 1, in connect
socket.error: [Errno 61] Connection refused
puedo ssh en bien de forma manual utilizando el mismo archivo de clave y el usuario. ¿Alguien ha tenido problemas al usar Paramiko? Mi código completo está debajo. Gracias.
import boto.ec2, time, paramiko, os
# Connect to the us-west-1 region
ec2 = boto.ec2.regions()[3].connect()
image_id = 'ami-ad7e2ee8'
image_name = 'Ubuntu 10.10 (Maverick Meerkat) 32-bit EBS'
new_reservation = ec2.run_instances(
image_id=image_id,
key_name='test',
security_groups=['web'])
instance = new_reservation.instances[0]
print "Spinning up instance for '%s' - %s. Waiting for it to boot up." % (image_id, image_name)
while instance.state != 'running':
print "."
time.sleep(1)
instance.update()
print "Instance is running, ip: %s" % instance.ip_address
print "Connecting to %s as user %s" % (instance.ip_address, 'ubuntu')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(instance.ip_address, username='ubuntu', key_filename=os.path.expanduser('~/.ssh/test'))
stdin, stdout, stderr = ssh.exec_command('echo "TEST"')
print stdout.readlines()
ssh.close()
+1 buena pregunta! Nunca he hecho nada con mi cuenta EC2, esto me dará un poco de impulso. –
¿ha intentado especificar el puerto como el segundo parámetro en ssh.connect()? –
Gracias por la sugerencia, pero tengo. Creo que lo he descubierto. Aunque el estado de la instancia se está "ejecutando" de acuerdo con boto, parece haber una demora para cuando realmente aceptará cualquier conexión SSH. Agregar un time.slep (25) antes de intentar hacer la conexión parece ser suficiente, pero voy a hacer algunas pruebas más. –