Me siento cómodo con el uso de la función ProxyCommand de ssh y puedo usarlo para saltar a través de múltiples hosts de bastión para llegar al host final de manera eficiente. Pero parece que no puedo entender cómo funciona realmente en el backend.
Por ej. Tengo el siguiente archivo de configuración.
Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh user@bastion.com -W %h:%p"
Entiendo que para conectarse al host final
, el ProxyCommand se ejecutará antes de realizar la conexión final.com
. Pero todavía parece que no puedo entender el orden de las conexiones.
¿Y qué hace la opción -W %h:%p
? Entiendo que es la función netcat y es similar a nc %h %p
.
Entonces, hasta donde tengo entendido, aquí está la secuencia de operaciones. Por favor, hágamelo saber si estoy equivocado. Usaré el archivo de configuración especificado anteriormente en mi ejemplo.
- El usuario ingresa
ssh final
- Se creó una conexión ssh a bastion.com.
- Se crea un túnel netcat desde bastion.com hasta el puerto 22 de final.com. El stdin de netcat está conectado al shell obtenido en la conexión a bastion.com.
- Así que ahora tenemos una conexión de nuestro sistema a final.com. La primera mitad de esta conexión es una conexión ssh de nuestro sistema a bastion.com. La segunda mitad de esta conexión es un túnel netcat desde bastion.com a final.com.
- El
ssh final
comando Now toma la conexión anterior como proxy y hace un túnel de sus datos a través de esta conexión existente.
Además, también me gustaría saber si esta técnica también se conoce como apilamiento ssh .
saltos de línea agregados