Saltar al contenido principal

Conectarte por SSH a instancias de AWS EC2 desde tu Mac

Las instancias públicas con su par de claves, las privadas a través de un bastión y una base de datos privada por un túnel: cada una guardada una vez como perfil.

Por Lucas Russo, desarrollador de SSHive · Actualizado el

Las instancias EC2 vienen en dos formas: las públicas, a las que llegas directamente con el par de claves que te dio AWS, y las privadas, en una subred de la VPC a la que solo llega un bastión o una VPN. Detrás suele haber una base de datos RDS que solo responde dentro de la VPC. Con el cliente OpenSSH, eso se convierte en ssh -i ~/keys/app.pem -J ec2-user@bastion ec2-user@10.0.1.42 escrito de memoria. En SSHive cada máquina es un perfil: el bastión una vez, cada instancia privada apuntando a él y el túnel a la base de datos en el perfil del bastión. Cuando cambia la dirección del bastión, editas un solo perfil.

Una instancia pública y su clave .pem

AWS te entrega un archivo .pem al crear un par de claves. Lo más limpio en SSHive es importarlo una vez: abre Ajustes > Claves SSH > Importar una clave y pega el contenido del archivo. SSHive guarda entonces la clave cifrada y el perfil deja de depender de un archivo olvidado en Descargas. Crea un perfil con el nombre DNS público o la IP de la instancia y el usuario de su AMI: ec2-user en Amazon Linux, ubuntu en Ubuntu, admin en Debian. El grupo de seguridad de la instancia debe permitir el puerto 22 desde tu dirección.

Instancias privadas a través de un bastión

Los servidores de aplicación van en subredes privadas, y se llega a ellos a través de un bastión en la subred pública. Crea primero el perfil del bastión (dirección pública, usuario, clave). En el perfil de una instancia privada, introduce su IP privada, abre Opciones avanzadas > Cadena de saltos (multi-hop), elige Añadir salto y selecciona el bastión. SSHive se conecta primero al bastión y abre a través de él la sesión con la instancia. Cada salto se autentica con su propio perfil, así que el bastión y la instancia pueden usar claves distintas. Una cadena admite hasta cinco saltos y es una función de Pro. La guía del jump host lo recorre pantalla a pantalla.

Una base de datos RDS privada desde TablePlus o DBeaver

RDS está en una subred privada y tu cliente de base de datos en el Mac no llega. El bastión sí. En el perfil del bastión, añade un túnel local: puerto local 5432, host remoto mydb.xxxxxxxx.eu-west-1.rds.amazonaws.com, puerto remoto 5432. Conéctate al bastión y apunta TablePlus o DBeaver a localhost:5432 con las credenciales de la base de datos. El nombre se resuelve en el bastión, dentro de la VPC, y por eso funciona. Esta parte cabe en la versión gratuita: es un solo túnel local sobre una conexión directa.

Qué es gratis aquí y qué necesita Pro

Una instancia pública con su clave, SFTP y el túnel a RDS en el bastión funcionan en la versión gratuita, dentro del límite de 5 perfiles y 2 sesiones a la vez. Las instancias privadas necesitan SSHive Pro, porque la cadena de saltos es una función de Pro; Pro también quita los límites de perfiles y sesiones y añade la difusión, para mandar el mismo comando a un grupo de instancias. Cuesta 14,99 €, una sola vez.

Preguntas frecuentes

¿Puedo usar AWS Session Manager en vez de un puerto 22 abierto?+
Sí, mediante una redirección de puertos. Con el plugin de Session Manager para la AWS CLI instalado en el Mac, ejecuta esto en el Terminal: aws ssm start-session --target i-0123456789abcdef0 --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["22"], "localPortNumber":["2222"]}' Después conecta un perfil de SSHive a localhost, puerto 2222, con el usuario y la clave de la instancia. La instancia no necesita ninguna regla de entrada para el puerto 22.
¿Qué pasa cuando cambia la dirección IP de la instancia?+
Detener y arrancar una instancia le da una IP pública y un nombre DNS público nuevos, salvo que tenga asociada una IP elástica. Asocia una a las máquinas a las que te conectas a menudo, o llega a ellas a través del bastión por su IP privada, que no cambia durante la vida de la instancia. En los dos casos, solo hay que editar un perfil.
¿Puedo copiar archivos a S3 desde SSHive?+
SSHive habla SSH y SFTP, no S3. En la sesión SSH de la instancia, aws s3 cp hace el trabajo y, con un rol de instancia asociado, sin claves de acceso. El panel SFTP es para el disco de la propia instancia.

Funciones de SSHive relacionadas

Prueba SSHive gratis en macOS

Consigue el cliente todo en uno de SSH, SFTP, RDP y VNC para Mac. Descarga gratuita, sin registro.