Openssh
將埠轉發添加到正在執行的 SSH 會話
OpenSSH 客戶端有一個用於埠轉發的命令行選項,使用如下:
ssh -L localport:server:serverport user@host
它將連接到
host
asuser
,同時在localport
客戶端上重定向到serverport
onserver
(可以是host
或任何可host
通過網路訪問的東西)。現在假設我已經通過 SSH 完成
host
了ssh user@host
在會話中間我意識到我忘了轉發埠。唉,我在做某事,所以我不只是想註銷並通過埠轉發重新建立 SSH 連接。
有沒有辦法將埠轉發添加到正在執行的 SSH 會話中?
來自
man 1 ssh
:轉義字元
當請求偽終端時,ssh 通過使用轉義字元支持許多功能。
單個波浪號字元可以作為
~~
或在波浪號後面跟隨一個不同於下面描述的字元來發送。轉義字元必須始終跟隨換行符才能被解釋為特殊字元。可以使用配置指令在配置文件中更改轉義字元,也可以EscapeChar
通過選項在命令行中更改轉義字元-e
。支持的轉義(假設預設
~
)是:$$ … $$
~C
打開命令行。目前這允許使用
-L
,-R
和-D
選項添加埠轉發(見上文)。$$ … $$使用 -h 選項可獲得基本幫助。
所以輸入
Enter```~```C
(即大寫c),然後-L localport:server:serverport
與期望
localport
,server
並且serverport
,最後Enter
。筆記:
- 初始
Enter
值將立即發送到遠端端,並可能在那裡引起一些動作,所以選擇一個好時機(例如,當你在一個空命令行的 shell 中時)。或者*,如果您確定*您輸入的最後一件事是Enter
無論如何(例如您剛剛呼叫了一個正在執行的命令),您可以直接開始,~
因為Enter
您的本地ssh
.- 在國際化鍵盤上,波浪號可能是生成特殊“波浪號”字元的死鍵(如按下
~``n
生成ñ
)。在這種情況下,可能需要按SPACE
after~
以生成單個波浪號,即:ENTER``~``SPACE``C
. 在西班牙語/LA 鍵盤佈局的情況下,由於沒有使用波浪號和 C 的組合字元,因此可以省略空格並~``C
生成所需的序列。- 關於多個重定向,
ssh
轉義的命令行只接受一個命令。您應該再次按鍵盤序列以輸入另一個命令或重定向。