
Recientemente descubrí que con ~/.ssh/config
, puedo ahorrar muchas pulsaciones de teclas y automatizar líneas de comando largas, especificando muchos valores predeterminados por host. Ahora que me di cuenta de lo poderosa que puede ser la herramienta, me pregunto si puede adaptarse a otro de mis casos de uso.
Tengo acceso a dos hosts bastion
y wikispy
. Bastion tiene una IP externa, wikispy
solo es visible desde la interna. Esto significa que normalmente para conectarme wikispy
, primero necesito hacer ssh bastion
y luego llamar ssh wikispy
. Obviamente, cosas como el reenvío de puertos van a ser complicadas de esta manera y esto es algo que me gustaría evitar.
Esto lleva a una pregunta: ¿puedo de alguna manera hacer ~/.ssh/config
una entrada que diga "cuando el usuario solicita un host etiquetado wikispy
, realmente se conecta bastion
y luego llama ssh wikispy
"? ¿Sería posible trabajar de forma transparente para poder llamar a cosas como ssh wikispy -L 9999:localhost:9999
y bastion
reenviar el puerto de una manera que me permita acceder a él desde dentro wikispy
?
Respuesta1
Parece que aquí es donde una combinación de ProxyCommand
y nc
resulta útil. Aquí hay una solución: agregue lo siguiente a ~/.ssh/config
:
Host bastion
HostName EXTERNAL_IP
User d
Host wikispy
HostName INTERNAL_IP
User d
ProxyCommand ssh bastion nc -q0 %h 22
De acuerdo aEste artículo, puede obtener más de un nivel de anidamiento de esta manera.