Contexto
Estoy ejecutando Ubuntu Desktop como mi máquina principal, a la que llamaré D. Quiero conectarme al servidor S a través de ssh, pero el firewall me está bloqueando.
Tengo acceso al servidor S, a través de un camino muy engorroso, que involucra una máquina virtual de Windows yMasilla. Esto hace que trabajar con este servidor sea extremadamente molesto: entorno completamente diferente, copiar/pegar no funciona, no puedo usar correctamente mi escritorio mientras estoy conectado a él (la máquina virtual interrumpe Alt-Tab), etc.
He verificado que puedo enviar ssh desde el servidor S a mi máquina de escritorio D (lo contrario de lo que necesito).
¿Podría de alguna manera iniciar el "reenvío de puertos" o algo similar desde el servidor, para poder acceder al servidor mediante ssh desde mi escritorio?
Respuesta1
Puede utilizar el siguiente comando para configurar un túnel SSH desde el servidor remoto a su máquina local:
$ ssh -f -N -R 1234:localhost:22 user@your_machine_ip
Cuando el túnel esté configurado, simplemente puede enviar ssh a su servidor remoto usando el siguiente comando:
$ ssh -p 1234 user@localhost
Tenga en cuenta que necesita configurar claves ssh para el inicio de sesión automático (sin solicitud de contraseña). Si desea crear el túnel SSH de forma interactiva, puede eliminar las opciones -f -N
. Para más información, man ssh
.
Respuesta2
Si está ejecutando una versión más reciente de OpenSSH (7.3+), puede usarProxyJump
que hornea todo junto mágicamente:
ssh -J windows_machine remote_server
Que en tu ~/.ssh/config
parece:
Host remote_server
HostName remote_server
ProxyJump windows_machine
User myname
ProxyJump
admite la sintaxis SSH completa, por lo que si está jim
activado windows_server
y usa el puerto 2222
para ssh. remote_server
está en la IP 192.168.0.110
desde windows_server
entonces puedes escribir:
Host remote_server
HostName 192.168.0.110
ProxyJump jim@windows_machine:2222
User myname
Yaúnsolo corre ssh remote_server
para llegar allí.
Si está ejecutando una versión anterior de SSH, useComando proxy- esto le permite indicarle a SSH que primero ejecute un comando para establecer una conexión proxy, antes de ejecutar el comando SSH real.
ssh -o ProxyCommand='ssh -W %h:%p windows_machine' remote_server
Esto usa el SSH-Wopción, que es una abreviatura de lo más arcanosintaxis netcat.
Tenga en cuenta que, como cuando ejecuta, ssh remote_server
ahora está en el, windows_machine
debe asegurarse de utilizar la IP delremove_server
desde la caja de saltoen lugar de la IP de su máquina; es posible que sean iguales.
Luego puede agregar esta directiva a su ~/.ssh/config
archivo:
Host remote_server
HostName remote_server
User myname
ProxyCommand ssh -W %h:%p windows_machine
Esto significa que siremote_server
esuna máquina diferente como se ve desde windows_machine
entonces, puede ponerla en la configuración y seguir usándola ssh remote_server
.
Respuesta3
En lugar de intentar eludir las cosas y crear una ruta complicada, ¿no puede simplemente solicitar que se permita SSH desde su escritorio al servidor? Si lo necesita y debería acceder al servidor, no veo por qué se rechaza la solicitud.