
來自這個問題:什麼是ssh連接埠轉送以及ssh本地和遠端連接埠轉送有什麼區別,我對這種用法感到困惑:
ssh -L 123:farawayhost:456 remotehost
ssh -L sourcePort:forwardToHost:onPort connectToHost
表示:使用 ssh 連線到connectToHost
,並將所有連線嘗試轉送到當地的sourcePort
onPort
到名為 的電腦上的端口forwardToHost
,可以從該connectToHost
計算機存取該端口。
"..., which 是什麼意思?可以到達從connectToHost
機器上。
如果我理解正確的話,ssh -L 123:localhost:456 remotehost
這是上述命令的一個特定情況,其中farawayhost
和remotehost
都在同一台機器上。
那麼當farawayhost
和remotehost
不在同一台機器上時,它是如何運作的呢?這是否意味著我需要先登入remotehost
然後再登入farawayhost
?
答案1
我不知道為什麼一開始我很困惑,也許是因為原來的答案不夠清楚,但後來我突然想通了。
假設我有2台機器,其公網IP分別是1.2.3.4
和2.3.4.5
。
用法是:,它將提示換行符,需要密碼on 。ssh -L 10283:1.2.3.4:8000 [email protected] -N
username
2.3.4.5
成功通過身份驗證後,ssh
不會讓您登錄,因為-N
已指定,但連接已建立。所以任何數據發送到當地的port10283
將首先傳送至2.3.4.5
via ssh
(port 22
),然後2.3.4.5
將資料傳送至1.2.3.4
on port8000.
現在讓我創建一個 html 檔案並使用echo hello > index.html
運行 http 伺服器。1.2.3.4
python -m http.server
然後我localhost:10283
在本地電腦上打字。
本地電腦:
在1.2.3.4
: