使用 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

相關內容