擁有 ssh 隧道本身以便從第三台機器進行遠端存取

擁有 ssh 隧道本身以便從第三台機器進行遠端存取

我正在努力理解以下內容是否以及如何可能。

假設我有一台機器T(目標),我想從遠端存取(最好通過ssh)。

T位於路由器/防火牆後面R,我無法將 的連接埠(例如)轉送到22的 連接R埠。總而言之,無法直接訪問。22TsshT

現在說

  • 我有一台A我可以完全控制的機器。

  • 我可以透過 ssh 從TA,即

      T:  ssh user@A
    

    成功了。

問題一:我可以用它來存取Tfrom的 shellA嗎?即,我可以使用從Tto建立的連接A來使用TfromA嗎?

   T ---> ssh ----> A          # this is possible               

   T <--- ? shell ? <---- A    # is this possible?

問題2:如果Q1是可能的:

假設我有第三台機器L(例如我的筆記型電腦),我的目標是存取Tfrom的 shell L。我可以透過 ssh 隧道A存取L嗎?

   T ----> ssh ----> A <---- ssh < ---- L

   T <-------  ?? %&£€ ?? <------- L       # is this possible?

任何幫助表示讚賞。

答案1

這當然是可能的。

Q1:可以透過 ssh 進行反向隧道嗎?

是的。以下是有關預留隧道的一些答案:

Q2:可以隧道預留隧道嗎?

是的,這基本上是隧道上的 ssh 隧道。以下是關於隧道進入隧道的一些答案:

答案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 加載到我的鑰匙圈中,請解鎖它。

相關內容