OpenSSH 客户端有一个用于端口转发的命令行选项,使用如下:
ssh -L localport:server:serverport user@host
它将连接到host
as user
,同时在localport
客户端上重定向到serverport
on server
(可以是host
或任何可host
通过网络访问的东西)。
现在假设我已经通过 SSH 完成host
了
ssh user@host
在会话中间我意识到我忘了转发端口。唉,我在做某事,所以我不只是想注销并通过端口转发重新建立 SSH 连接。
有没有办法将端口转发添加到正在运行的 SSH 会话中?
来自
man 1 ssh
:所以输入Enter
~
C(即大写c),然后与期望
localport
,server
并且serverport
,最后Enter。笔记:
初始Enter值将立即发送到远程端,并可能在那里引起一些动作,所以选择一个好时机(例如,当你在一个空命令行的 shell 中时)。或者,如果您确定您输入的最后一件事是Enter无论如何(例如您刚刚调用了一个正在运行的命令),您可以直接开始,
~
因为Enter您的本地ssh
.在国际化键盘上,波浪号可能是生成特殊“波浪号”字符的死键(例如按下~n生成
ñ
)。在这种情况下,可能需要按SPACEafter~以生成单个波浪号,即:ENTER~SPACEC. 在西班牙语/LA 键盘布局的情况下,由于没有使用波浪号和 C 的组合字符,因此可以省略空格并~C生成所需的序列。关于多个重定向,
ssh
转义的命令行只接受一个命令。您应该再次按键盘序列以输入另一个命令或重定向。您可以有多个 ssh 连接。端口转发可以独立于您正在运行的连接执行。此外,它必须在客户端执行
-L
。您可以添加
-N -f
到您的命令以从另一个终端窗口将其作为背景,而不发送任何ENTER. 此后台可能无法在 Windows 中正常工作,只需最小化终端即可。是的,还有另一个答案涵盖~C.