Openssh

將埠轉發添加到正在執行的 SSH 會話

  • April 9, 2022

OpenSSH 客戶端有一個用於埠轉發的命令行選項,使用如下:

ssh -L localport:server:serverport user@host

它將連接到hostas user,同時在localport客戶端上重定向到serverporton server(可以是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

與期望localportserver並且serverport,最後Enter

筆記:

  • 初始Enter值將立即發送到遠端端,並可能在那裡引起一些動作,所以選擇一個好時機(例如,當你在一個空命令行的 shell 中時)。或者*,如果您確定*您輸入的最後一件事是Enter無論如何(例如您剛剛呼叫了一個正在執行的命令),您可以直接開始,~因為Enter您的本地ssh.
  • 在國際化鍵盤上,波浪號可能是生成特殊“波浪號”字元的死鍵(如按下~``n生成ñ)。在這種情況下,可能需要按SPACEafter~以生成單個波浪號,即:ENTER``~``SPACE``C. 在西班牙語/LA 鍵盤佈局的情況下,由於沒有使用波浪號和 C 的組合字元,因此可以省略空格並~``C生成所需的序列。
  • 關於多個重定向,ssh轉義的命令行只接受一個命令。您應該再次按鍵盤序列以輸入另一個命令或重定向。

引用自:https://unix.stackexchange.com/questions/697825