我刚刚发现了OpenSSH的ControlMaster / ControlPath功能,该功能允许您使用单个SSH连接来运行多个终端。
由于我经常使用SSH来使用端口转发来获取经过加密和身份验证的VNC会话,因此我立即意识到您无法将端口转发添加到已建立连接的远程服务器上。糟透了
有时,后来我发现您可以通过在正在运行的SSH终端会话中键入〜C来规避此限制。这将打开一个命令行,允许您添加或删除端口转发。
现在的问题是:如何在使用ControlMaster / ControlPath功能的现有SSH会话上添加端口转发,而无需访问该SSH会话内的终端会话。我需要启用它来启动脚本,该脚本启动安全的隧道VNC连接,以便我添加并稍后删除其端口转发。
(我知道我可以使用终端多路复用器,例如GNU Screen或tmux,实际上我已经在这样做了。但是出于服务器的原因,我喜欢只使用一个SSH会话的想法。)
1
如果您找到一种解决方法,我会感到困惑,但我怀疑您不会。以编程方式控制您实际上并不参与的SSH会话的属性似乎是一个巨大的安全问题。
—
卡莱布
废话!如何以编程方式控制SSH会话的属性会带来巨大的安全性问题?解决方案确实非常简单:serverfault.com/a/340361/93109
—
aculich 2011年
现在的问题是仅询问有关添加端口转发的问题,因此它更好地匹配了已接受的答案。我在这里问了一个有关如何删除它们的问题:serverfault.com/q/457295/50950
—
aef