configuración ssh con IP dinámica

configuración ssh con IP dinámica

Tengo una instancia EC2 con una IP dinámica y me gustaría conectarme a ella directamente sin tener que modificarla .ssh/configcada vez que cambia.

Puedo consultar la ip con

aws ec2 describe-instances --filters 'Name=tag:Name,Values=MYTAG' --query 'Reservations[0].Instances[0].NetworkInterfaces[0].Association.PublicIp' --output text

Ahora, quiero agregar este comando a la ProxyCommandsección de mi .ssh/configarchivo, pero recibo algunos errores.

Esta es la sección para ese anfitrión.

Host ec2-instance
     User ubuntu
     IdentityFile my/pem/file.pem
     ProxyCommand bash -c "host=$(aws ec2 describe-instances --filters 'Name=tag:Name,Values=MYTAG' --query 'Reservations[0].Instances[0].NetworkInterfaces[0].Association.PublicIp' --output text); ssh ${host}"

Sinceramente, no sé cómo ProxyCommandfunciona la opción y tampoco man sshparece man ssh_confighacer un buen trabajo explicándola.

¿Se puede lograr esto?

Respuesta1

ProxyCommand actúa como una alternativa para elconexión TCP sin formato.No reemplaza toda la conexión SSH, aunque a menudo se ve que se usa para invocar ssh -W, pero sigue siendo simplemente usar otro sistema SSH para proporcionar un túnel TCP sin formato.

Entonces, en su situación, ProxyCommand debería ejecutar alguna aplicación simple de "tubería TCP" como nco socato ncat: cualquier cosa que conecte stdin/stdout a una conexión TCP funcionará:

Host ...
    ProxyCommand bash -c "host=...; nc $host %p"

Host ...
    ProxyCommand bash -c "host=...; socat STDIO TCP:$host:%p"

Realmente recomendaría mover todas las cosas complejas de tu ~/.ssh/config a un script separado, para que tu configuración se vea así:

Host ...
    ProxyCommand ~/bin/ec2-connect %h %p

información relacionada