Ich habe ein Gerät, auf dem ein apt-get-Repository installiert ist. Normalerweise verwende ich den folgenden Befehl, um es so einzurichten, dass ich apt-get
von einem Remote-Server darauf zugreifen kann.
ssh user@IPofRemoteServer -R8880:127.0.0.1:8880
Hierzu ist jedoch erforderlich, dass die lokale Repository-Appliance über eine Verbindung zum Remote-Server verfügt.
Ich muss folgendes tun:
local repo ---> jumpbox ---> remote server
So kann ich es apt-get update
erfolgreich vom lokalen Repo aus ausführen.
Ich habe Folgendes versucht, jedoch ohne Erfolg:
ssh -A -t user@jumpbox -R8880:127.0.0.1:80 ssh -A -t user@remoteServer -R8880:127.0.0.1:80
Dies funktioniert jedoch nicht und nach eingehender Untersuchung bin ich zu dem Schluss gekommen, dass dies daran liegt, dass Port 8880 auf der Jumpbox einfach auf 80 geht und nicht tatsächlich übersetzt wird, um ihn an das lokale Repo weiterzuleiten.
Ich habe verschiedene Varianten erfolglos ausprobiert und muss dies tun, um den Remote-Server zu aktualisieren.
Antwort1
Ist es nicht ausreichend:
ssh -A -t user@jumpbox -R8880:remoteServer:80
Ich verstehe, dass der Port des Remote-Servers vom Jump-Host aus zugänglich ist?
BEARBEITEN: Jetzt verstehe ich, dass Sie ein lokales Repository haben, das Sie auf einem Remote-Host anzeigen und verwenden möchten.
Normalerweise verwende ich es so: In ~/.ssh/config:
Host TargetServer
Hostname remoteServer
ProxyJump jumpbox
Und jetzt können Sie einfach eine SSH-Verbindung zu Ihrem Remote-Server herstellen:
ssh TargetServer -R8880:localhost:80
Sie sind nun bei Ihrem Zielserver angemeldet. Sie können überprüfen, ob der Tunnel geöffnet ist:
netstat -lapn | grep 8880
Und natürlich sollten Sie dort ein Yum-Update durchführen können.
EDIT2: Wenn Sie es auf der Kommandozeile ohne Konfigurationsdatei verwenden möchten, verwenden Sie-Jschalten:
-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.
Antwort2
Ich bin nicht sicher, ob ich Ihre Frage richtig verstanden habe, da Sie sagen, Sie möchten „apt-get (...) von einem Remote-Server“ und auch „apt-get update (...) vom lokalen Repo ausführen“.
Hier gehe ich davon aus, dass das Repository lokal gehostet wird und die Remote-Verbindung eine Verbindung damit herstellen möchte.
Entweder zwei Befehle wie diese:
local$ ssh -R 54321:localhost:8880 user@jumpbox
jumpbox$ ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Entweder einfach:
local$ ssh -tAR 54321:localhost:8880 user@jumpbox ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Für Letzteres benötigen Sie einen lokalen SSH-Agenten oder Sie müssen ssh -A
von einem Computer aus, der über einen Agenten verfügt, damit verbunden sein.
Natürlich /etc/apt/sources.list
müsste Ihre Datei auf dem Remote-Speicherort einen Verweis auf localhost:8880 enthalten.
Antwort3
Ich fand diesen Befehl nützlich:
ssh -L LOCAL_PORT:WEBSERVER:REMOTE_PORT -J jumpuser@JUMPHOST remoteuser@REMOTEHOST
Referenz:https://pillpall.github.io/linux/2018/02/06/sshscp_jumphost.html