Las respuestas anteriores mencionan cómo usar la directiva ProxyJump (agregada en OpenSSH 7.3) para conectarse a través de un servidor intermedio (generalmente denominado host de bastión), pero lo mencionan solo como un argumento de línea de comando.
A menos que sea una máquina a la que no se conectará en el futuro, lo mejor es que la configure ~/.ssh/config
.
Pondría un archivo como:
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...
Si está utilizando una versión anterior de OpenSSH que no es compatible con ProxyJump, la reemplazaría con el equivalente:
ProxyCommand ssh -W %h:%p bastion-machine
y si su versión ssh local era realmente antigua y no era compatible -W
:
ssh bastion-machine nc %h %p
aunque este último requiere que la máquina de bastión esté nc
instalada.
La belleza de ssh es que puede configurar cada destino en el archivo, y se apilarán muy bien. Por lo tanto, terminas trabajando office-machine
como el nombre de host en todas las herramientas (ssh, scp, sftp ...) ya que eran conexiones directas y descubrirán cómo conectarse en función de ssh_config. También podría tener comodines Host *.internal.company.local
para hacer que todos los hosts que terminen así pasen por un bastión específico, y se aplicará a todos ellos. Una vez configurado correctamente, la única diferencia entre hacer conexiones de un salto o veinte sería los tiempos de conexión más lentos.