Eu tenho um dispositivo que possui um repositório apt-get instalado. Normalmente eu uso o seguinte comando para fazer isso apt-get
de um servidor remoto.
ssh user@IPofRemoteServer -R8880:127.0.0.1:8880
No entanto, isso requer que o dispositivo de repositório local tenha uma conexão com o servidor remoto.
Eu preciso fazer o seguinte:
local repo ---> jumpbox ---> remote server
Para que eu possa executar apt-get update
com sucesso no repositório local.
Eu tentei o seguinte para fazer isso sem sucesso:
ssh -A -t user@jumpbox -R8880:127.0.0.1:80 ssh -A -t user@remoteServer -R8880:127.0.0.1:80
Isso, no entanto, não funciona e, após pesquisa, acho que isso se deve ao fato da porta 8880 ir para 80 no jumpbox e não traduzi-la para encaminhá-la para o repositório local.
Tentei variações sem sucesso e preciso fazer isso para atualizar esse servidor remoto.
Responder1
Não é suficiente:
ssh -A -t user@jumpbox -R8880:remoteServer:80
Entendo que a porta dos servidores remotos pode ser acessada pelo host de salto.
EDITAR: Agora, entendo que você tem algum repositório local que deseja mostrar no host remoto e usá-lo.
Bem, normalmente eu uso assim: Em ~/.ssh/config:
Host TargetServer
Hostname remoteServer
ProxyJump jumpbox
E agora você pode simplesmente fazer uma conexão ssh com seu servidor remoto:
ssh TargetServer -R8880:localhost:80
Agora você está conectado ao seu servidor de destino. Você pode verificar se o tunel está aberto:
netstat -lapn | grep 8880
E é claro que você poderá fazer uma atualização do yum lá.
EDITAR2: Se você quiser usá-lo na linha de comando sem usar o arquivo de configuração-Jtrocar:
-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.
Responder2
Não tenho certeza se entendi sua pergunta corretamente porque você diz que deseja "apt-get (...) de um servidor remoto" e também "executar o apt-get update (...) a partir do repositório local".
Aqui, suponho que o local esteja hospedando o repositório e o remoto queira se conectar a ele.
Dois comandos como este:
local$ ssh -R 54321:localhost:8880 user@jumpbox
jumpbox$ ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Ou apenas:
local$ ssh -tAR 54321:localhost:8880 user@jumpbox ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Para o último, você precisa de um agente ssh local ou precisa estar conectado a ele ssh -A
de uma máquina que tenha um agente.
Obviamente, seu /etc/apt/sources.list
arquivo remoto precisaria ter uma referência a localhost:8880.
Responder3
Achei este comando útil:
ssh -L LOCAL_PORT:WEBSERVER:REMOTE_PORT -J jumpuser@JUMPHOST remoteuser@REMOTEHOST
Referência:https://pillpall.github.io/linux/2018/02/06/sshscp_jumphost.html