Tengo un dispositivo que tiene instalado un repositorio apt-get. Normalmente uso el siguiente comando para poder acceder apt-get
a él desde un servidor remoto.
ssh user@IPofRemoteServer -R8880:127.0.0.1:8880
Sin embargo, esto requiere que el dispositivo de repositorio local tenga una conexión con el servidor remoto.
Necesito hacer lo siguiente:
local repo ---> jumpbox ---> remote server
Entonces puedo ejecutar apt-get update
con éxito desde el repositorio local.
Intenté lo siguiente para hacer esto sin éxito:
ssh -A -t user@jumpbox -R8880:127.0.0.1:80 ssh -A -t user@remoteServer -R8880:127.0.0.1:80
Sin embargo, esto no funciona y, tras investigar, creo que esto se debe a que el puerto 8880 simplemente va al 80 en el jumpbox y en realidad no lo traduce para reenviarlo al repositorio local.
Probé variaciones sin éxito y necesito hacer esto para actualizar ese servidor remoto.
Respuesta1
¿No es suficiente con:
ssh -A -t user@jumpbox -R8880:remoteServer:80
Entiendo que se puede acceder al puerto de servidores remotos desde Jump Host.
EDITAR: Ahora, entiendo que tiene algún repositorio local que desea mostrar en el host remoto y usarlo.
Bueno, normalmente lo uso así: En ~/.ssh/config:
Host TargetServer
Hostname remoteServer
ProxyJump jumpbox
Y ahora puedes simplemente establecer una conexión ssh a tu servidor remoto:
ssh TargetServer -R8880:localhost:80
Ahora ha iniciado sesión en su servidor de destino. Puedes verificar si el túnel está abierto:
netstat -lapn | grep 8880
Y, por supuesto, deberías poder realizar una actualización de Yum allí.
EDITAR2: Si desea usarlo en la línea de comando sin usar el archivo de configuración-Jcambiar:
-J [user@] host [:port]
Connect to the target host by first making a ssh connection to the jump host and then establishing a
TCP forwarding to the ultimate destination from there. Multiple jump hops may be specified sepa‐
rated by comma characters. This is a shortcut to specify a ProxyJump configuration directive.
Respuesta2
No estoy seguro de haber entendido correctamente su pregunta porque dice que desea "apt-get (...) desde un servidor remoto" y también "ejecutar apt-get update (...) desde el repositorio local".
Aquí supongo que el local aloja el repositorio y el remoto quiere conectarse a él.
O dos comandos como este:
local$ ssh -R 54321:localhost:8880 user@jumpbox
jumpbox$ ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
O simplemente:
local$ ssh -tAR 54321:localhost:8880 user@jumpbox ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Para el último, necesita un agente ssh local o debe estar conectado a él ssh -A
desde una máquina que tenga un agente.
Por supuesto, su /etc/apt/sources.list
archivo remoto deberá tener una referencia a localhost:8880.
Respuesta3
Encontré este comando útil:
ssh -L LOCAL_PORT:WEBSERVER:REMOTE_PORT -J jumpuser@JUMPHOST remoteuser@REMOTEHOST
Referencia:https://pillpall.github.io/linux/2018/02/06/sshscp_jumphost.html