使用 SSH 通过跳转盒访问本地存储库

使用 SSH 通过跳转盒访问本地存储库

我有一个安装了 apt-get 存储库的设备。通常我使用以下命令来制作它,以便我可以apt-get从远程服务器访问它。

ssh user@IPofRemoteServer -R8880:127.0.0.1:8880

但是,这需要本地存储库设备连接到远程服务器。

我需要执行以下操作:

local repo ---> jumpbox ---> remote server

这样我就可以apt-get update从本地存储库成功运行。

我已尝试以下方法来执行此操作但没有成功:

ssh -A -t user@jumpbox -R8880:127.0.0.1:80 ssh -A -t user@remoteServer -R8880:127.0.0.1:80

然而,这不起作用,经过研究,我认为这是由于端口 8880 只是在跳转盒上转到 80,而不是实际将其转换为转发到本地存储库。

我尝试过各种变体但没有成功,我需要这样做来更新该远程服务器。

答案1

难道还不够:

ssh -A -t user@jumpbox -R8880:remoteServer:80

我知道可以从跳转主机访问远程服务器端口?

编辑: 现在,我知道您有一些本地存储库想要在远程主机上显示并使用它。

好吧,通常我这样使用它:在 ~/.ssh/config 中:

Host TargetServer
    Hostname remoteServer
    ProxyJump jumpbox

现在您可以简单地与远程服务器建立 ssh 连接:

ssh TargetServer -R8880:localhost:80

您现在已登录到目标服务器。您可以验证隧道是否打开:

netstat -lapn | grep 8880

当然,您应该能够在那里进行 yum 更新。

编辑2: 如果你想在命令行上使用它而不使用配置文件使用-J转变:

-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.

答案2

我不确定我是否正确理解你的问题,因为你说你想“从远程服务器 apt-get (...)”并且“从本地存储库运行 apt-get update (...)”。

在这里,我假设本地正在托管存储库,而远程想要连接到它。

两个命令如下:

local$   ssh -R 54321:localhost:8880 user@jumpbox
jumpbox$ ssh -R 8880:localhost:54321 user@remote
remote$  apt-get ...

要么只是:

local$  ssh -tAR 54321:localhost:8880 user@jumpbox ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...

对于最后一个,您需要本地有 ssh 代理,或者需要ssh -A从具有代理的计算机连接到它。

当然,/etc/apt/sources.list远程文件需要引用 localhost:8880。

答案3

我发现这个命令很有用:

ssh -L LOCAL_PORT:WEBSERVER:REMOTE_PORT -J jumpuser@JUMPHOST remoteuser@REMOTEHOST

参考:https://pillpall.github.io/linux/2018/02/06/sshscp_jumphost.html

相关内容