lukaszkorecki Asked: 2020-11-08 08:52:12 +0800 CST2020-11-08 08:52:12 +0800 CST 2020-11-08 08:52:12 +0800 CST 以编程方式在活动会话中打开 SSH 隧道? 772 我知道在开始一个新的 SSH 会话后,我可以打开 SSH shell 来启动一个新的隧道(Enter然后是~最后C): >ssh -L 9000:localhost:9000 Forwarding port. 有没有办法以非交互式方式进行,而已经 SSH 进入? 我在这里忽略了安全隐患,这是针对本地开发情况,我可能需要打开通往将在随机端口上侦听的服务器的隧道。 ssh tunnel 1 个回答 Voted Best Answer A.B 2020-11-09T01:26:14+08:002020-11-09T01:26:14+08:00 -M您可以这样做,事先做好一些准备:使用/ControlMaster和-S/将(第一个)ssh 命令设置为主 ssh ControlPath。通常,ControlMaster功能旨在通过使用其单个 TCP 连接的单个 ssh 身份验证将多个 ssh shell 运行到同一目标。但是您也可以使用-O ctl_cmd运行其他 ssh 命令来添加额外的转发: -O ctl_cmd 控制一个活动的连接多路复用主进程。当-O 指定选项时,ctl_cmd参数被解释并传递给主进程。有效命令有:“check”(检查主进程是否正在运行)、“forward”(请求转发而不执行命令)、“cancel”(取消转发)、“exit”(请求主进程退出)和“stop” ”(请求主设备停止接受进一步的多路复用请求)。 1号航站楼: ssh -S /tmp/exampleinsecuresocket -M remoteuser@remotehost 终端2: ssh -S /tmp/exampleinsecuresocket -O forward -L 9000:localhost:9000 remoteuser@remotehost 请注意,终端 2 的 ssh 将立即退出并且不会要求身份验证,即使它通常应该是预期的:它没有与remotehost进行任何连接,只是告诉已经在终端 1 中运行的 ssh 执行LocalForward。在终端 1 中运行的 ssh 现在有一个额外的端口转发。当然,这是非交互式的,可以在脚本中完成。 如手册中所述,通过充分使用参数等参数-o ControlMaster auto和具有足够标记的正确方案来控制路径选项,可以自动执行~/.ssh/config任何目的地的初始设置。
-M
您可以这样做,事先做好一些准备:使用/ControlMaster
和-S
/将(第一个)ssh 命令设置为主 sshControlPath
。通常,ControlMaster功能旨在通过使用其单个 TCP 连接的单个 ssh 身份验证将多个 ssh shell 运行到同一目标。但是您也可以使用-O
ctl_cmd运行其他 ssh 命令来添加额外的转发:1号航站楼:
终端2:
请注意,终端 2 的 ssh 将立即退出并且不会要求身份验证,即使它通常应该是预期的:它没有与remotehost进行任何连接,只是告诉已经在终端 1 中运行的 ssh 执行LocalForward。在终端 1 中运行的 ssh 现在有一个额外的端口转发。当然,这是非交互式的,可以在脚本中完成。
如手册中所述,通过充分使用参数等参数
-o ControlMaster auto
和具有足够标记的正确方案来控制路径选项,可以自动执行~/.ssh/config
任何目的地的初始设置。