将端口转发添加到正在运行的 SSH 会话

将端口转发添加到正在运行的 SSH 会话

OpenSSH 客户端有一个用于端口转发的命令行选项,使用方式如下:

ssh -L localport:server:serverport user@host

它将连接到hostas user,同时localport在客户端上重定向到serverporton server(可以是hosthost通过网络可访问的任何内容)。

现在假设我已经通过 SSHhost进行了操作

ssh user@host

在会话进行到一半时,我意识到我忘记转发端口。唉,我正在做某事,所以我不想注销并通过端口转发重新建立 SSH 连接。

有没有办法将端口转发添加到正在运行的 SSH 会话?

答案1

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~SPACEC。在西班牙语/LA 键盘布局的情况下,由于没有使用波形符和 C 的组合字符,因此可以省略空格并生成~C所需的序列。

  • 对于多个重定向,ssh转义的命令行仅接受单个命令。您应该再次按键盘序列以输入另一个命令或重定向。

答案2

您可以有多个 ssh 连接。端口转发可以独立于正在运行的连接来执行。此外,它必须在客户端执行-L

您可以添加-N -f到命令中以从另一个终端窗口将其置于后台,并且不发送任何ENTER.此后台可能无法在 Windows 中正常工作,只需最小化终端即可。

就在这里另一个答案涵盖~C

相关内容