
我正在努力理解以下內容是否以及如何可能。
假設我有一台機器T
(目標),我想從遠端存取(最好通過ssh
)。
T
位於路由器/防火牆後面R
,我無法將 的連接埠(例如)轉送到22
的 連接R
埠。總而言之,無法直接訪問。22
T
ssh
T
現在說
我有一台
A
我可以完全控制的機器。我可以透過 ssh 從
T
到A
,即T: ssh user@A
成功了。
問題一:我可以用它來存取T
from的 shellA
嗎?即,我可以使用從T
to建立的連接A
來使用T
fromA
嗎?
T ---> ssh ----> A # this is possible
T <--- ? shell ? <---- A # is this possible?
問題2:如果Q1是可能的:
假設我有第三台機器L
(例如我的筆記型電腦),我的目標是存取T
from的 shell L
。我可以透過 ssh 隧道A
存取L
嗎?
T ----> ssh ----> A <---- ssh < ---- L
T <------- ?? %&£€ ?? <------- L # is this possible?
任何幫助表示讚賞。
答案1
這當然是可能的。
Q1:可以透過 ssh 進行反向隧道嗎?
是的。以下是有關預留隧道的一些答案:
- (UL)反向 SSH 隧道如何運作?
- (UL)透過反向 SSH 隧道進行 SFTP?
Q2:可以隧道預留隧道嗎?
是的,這基本上是隧道上的 ssh 隧道。以下是關於隧道進入隧道的一些答案:
- (UL)透過 ssh 透過另一台機器建立隧道流量
- (UL)透過另一台機器登入另一台機器
- (UL)如何在隧道中鋪設隧道?
答案2
我一直這樣做,但方向相反。首先建立從 T 到 A 上本地主機的反向 SSH 隧道,然後從 L 隧道到 AT 隧道的 A 端,然後使用 ssh 連接到 LA 隧道的本地部分,然後透過 LAT 進行遠端連線。
在我的範例中,A 正在偵聽連接埠 22123 上的 ssh 連線
。
我有本地名為 ~/.ssh/A_id_rsa 和 ~/.ssh/T_id_rsa 的金鑰,分別作為 user.name 連接到 2 台機器 A 和 T。
這是一個連接 TA 隧道的腳本,應該在 T 上運行。
#!/bin/bash SSH_KEY =“-i /home/user.name/.ssh/A_id_rsa” REMOTE_USER="用戶名" GATEWAY_MACHINE="A.domain.com" GATEWAY_SSH_PORT="22123" ssh -N -R2201:127.0.0.1:22 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}
這是一個連接 LA 隧道的腳本,應該在 L 上運行。
#!/bin/bash SSH_KEY =“-i /home/user/.ssh/A_id_rsa” REMOTE_USER="用戶名" GATEWAY_MACHINE="A.domain.com" GATEWAY_SSH_PORT="22123" ssh -N -L2201:127.0.0.1:2201 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}
然後我將以下內容新增到本機的 /etc/hosts 檔案中,這樣我就可以將隧道的本地端稱為 T:-
127.0.0.1 T
然後我有這個腳本,在我們的範例中名為 /usr/local/bin/T 來連接到它
#!/bin/bash SSH_KEY =“-i /home/user/.ssh/T_id_rsa” REMOTE_USER="用戶名" ssh -p 2201 ${SSH_KEY} ${REMOTE_USER}@T
TA隧道是反向的,所以-R,LA隧道是本地的,所以-L。腳本中的 -N 阻止他們啟動 A 的 shell,所以我通常運行它,或者使用 & 在後台運行它,或者在輸入密碼後按 ctrl+Z 並運行 bg 來執行它如果我還沒有將A_id_rsa 加載到我的鑰匙圈中,請解鎖它。