Comando ssh proxyjump al archivo de configuración

Comando ssh proxyjump al archivo de configuración

Utilizo un comando ssh para iniciar sesión en un nodo remoto usando un nodo intermedio a través de proxyjump. Los nodos remotos e intermedios son servidores Linux y mi cliente es una Macbook. Este comando funciona y se ve así:

ssh -i .ssh/id_file -J user1@jump_node -A -D remote_port user2@remote_node

donde reemplazo jump_node y remoto_node con los nombres de host de los nodos intermedios y remotos, y puerto_remoto con el puerto sshd en nodo_remoto.

Mi primera y principal pregunta es: cómo convertir este comando en una sección de configuraciónque puedo poner en mi archivo .ssh/config? Miré la página de manual de ssh y no pude obtener las opciones de configuración correspondientes para -Dlas -Abanderas (¿supongo ForwardAgent yesque para -A?). ¿Alguien podría explicar estas banderas y cómo crear una sección de configuración correcta a partir de este comando?


Mi otra pregunta es menos importante, pero me ayudaría a entender lo que está pasando aquí.Esta segunda pregunta trata sobre un error que recibo cuando emito un comando ligeramente diferente.

La mayoría de la documentación que leo en línea sugiere usar un comando como este:

ssh -i .ssh/id_file -J user1@jump_node user2@remote_node:remote_port

pero cuando intento este comando (con y sin bandera -A), aparece el siguiente error:

channel 0: open failed: connect failed: Name or service not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

No pude entender qué significa este error y si tiene algunos consejos que podría utilizar.

Respuesta1

Verman 5 ssh_config:

ForwardAgent yes
IdentityFile .ssh/id_file

Host jump_node
    User user1

Host remote_node
   ProxyJump jump_node
   User user2

y simplemente corre ssh remote_node.

Incluso puedes construir una cadena de esta manera, si también especificas (otro) ProxyJumppara el jump_nodetambién.


El segundo problema es que ssh user2@remote_node:remote_portla sintaxis es incorrecta. El mensaje de error indica Name or service not known, porque intentó (y falló) resolverlo remote_node:remote_portcomo un nombre de host (sí, con dos puntos incrustados), no remote_nodecomo cabría esperar. Intente ejecutar lo mismo sin -J, el mensaje de error será un poco más claro.

Interpretaría esto como un intento de especificar un puerto donde el servidor SSH escucha en el nodo remoto; para eso, use -pel parámetro de línea de comando o Portla opción de entrada de host en un archivo de configuración.

Además, esto no tiene nada en común con el -Dcambio de línea de comandos. Y su argumento no es un "puerto remoto". Más bien, ese interruptor hace algo completamente diferente, es decir, hace que el cliente SSHescucharen el puerto especificadoen la máquina localy acepte conexiones SOCKS, y el control remoto se utilizará como nodo de salida. Puedes, por ejemplo, configurarlo en el navegador local, para que acceda a Internet a través del túnel SSH y terceros (servidores web) vean tus conexiones como provenientes de la IP del host remoto; nadie verá su IP "real", excepto el servidor SSH (que, sin embargo, verá la dirección del servidor de salto en este caso). Para configuraresteen la configuración, usa DynamicForwardla opción en el archivo de configuración.

información relacionada