為反向隧道 + 本地轉發創建 ssh 配置
我正在嘗試為以下場景創建一個 ~/.ssh/config 條目:
我在某個地方的專用網路中有一個 linux機器,一個可以從任何地方訪問的****vps 伺服器和我的本地 macbook。
linux 盒子在防火牆後面,但我仍然應該能夠從我的本地 macbook SSH 進入盒子。
我目前有效的解決方案如下:
linux 機器通過以下方式啟動到 vps 的反向隧道:
ssh -R 15000:localhost:22 vps-user@vps
然後從我的本地 macbook 我通過以下方式啟動到 vps 的隧道:
ssh -L 12345:localhost:1500 vps-user@vps
然後我啟動另一個 ssh 命令,從那裡我可以直接 ssh 進入 linux 盒子,否則它會隱藏在防火牆等後面:
ssh linuxbox-user@localhost -p 12345
所以首先,這一切都非常可靠(如果你有任何更簡單的方法可以做到這一點,請告訴我——在 macbook 方面看起來很麻煩)。
我將如何創建一個 ~/.ssh/config 條目,在最好的情況下,只需編寫:
ssh linuxbox
並完成它?
我試過使用LocalForward選項,它允許我至少為*ssh -L …*命令創建一個別名,但它仍然需要第二個 ssh 命令。
我也嘗試過ProxyCommand選項,但沒有運氣,也許只是配置錯誤?
最簡單的方法可能是避免本地轉發,這在您的情況下似乎是不必要的,並利用該
ProxyJump
指令,該指令允許您指定一個或多個跳轉代理(即您連接到和從中到達的一個或多個中間主機)您的目標主機)。您將需要兩個連接:
- 您已經建立的遠端轉發,從您的 linux 機器到 vps:
ssh -R 15000:localhost:22 vps-user@vps
我假設您可以連接到埠上的 vps
22
(正如您的問題中暗示的那樣)。這將讓 vps 將它在埠上接收到的連接轉發到您的 linux機器
15000
的埠。22
2. 從本地 MacBook 到 vps 的連接:ssh -J vps-user@vps -p 15000 linuxbox-user@localhost
-J
是指定ProxyJump
指令的快捷方式(請參閱手冊頁ssh(1)
)。同樣,這暗示您可以連接到 port 上的 vps
22
。此命令會將您的本地 MacBook 連接到
22
vps 上的埠,然後從那裡連接15000
到同一 vps 上的埠(linux 機器正在偵聽),讓您無需進一步連接即可登錄到您的 linux 機器。相應的
.ssh/config
文件將是:
- 在你的 linux 機器上:
Host vps RemoteForward 15000 localhost:22 User vps-user
這使您只需鍵入:
ssh vps
- 在本地 MacBook 上:
Host linuxbox ProxyJump vps-user@vps Hostname localhost Port 15000 User linuxbox-user
這使您只需要發布:
ssh linuxbox
如果您正在使用公鑰身份驗證(正如您可能正在做的那樣,至少允許遠端轉發的無人值守設置),您還可以將
IdentityFile
指令添加到您的兩個.ssh/config
文件中,以消除輸入密碼的需要。如果滿足一些條件,你也許還可以將本地 MacBook 直接連接到
15000
vps 上的埠,從而避免本地轉發或代理跳轉的需要。即,條件是:
- vps 上的埠
15000
沒有被防火牆過濾。- 您
GatewayPorts yes
在sshd
vps 的配置中設置(通常在 中/etc/ssh/sshd_config
)。此設置預設
no
並確定遠端轉發是否可以將偵聽埠綁定到環回之外的其他地址(因此,IP 地址不是127.0.0.1
或::1
)。有關詳細資訊,請參閱手冊頁sshd_config(5)
。在這種情況下,您只需要以下兩個命令:
- 從你的 linux 機器到 vps 的反向轉發(注意
*:
前面的遠端埠,它代表“監聽任何地址”):ssh -R *:15000:localhost:22 vps-user@vps
- 從 MacBook 到 vps 的簡單連接:
ssh -p 15000 -l linuxbox-user vps
翻譯成以下
.ssh/config
文件:
- 在您的 linux 機器上(再次注意
*:
前面的遠端埠):Host vps RemoteForward *:15000 localhost:22 User vps-user
- 在本地 MacBook 上:
Host linuxbox Hostname vps Port 15000 User linuxbox-user
但是請注意,這樣你會將你的 linux 機器暴露在網際網路上,這很可能是你不想要的。