如何连接到使用 -f -N 后台运行的 SSH 会话?

如何连接到使用 -f -N 后台运行的 SSH 会话?

我正在做一些工作,需要使用代理链关闭一台机器,所以我连接到一个系统并绑定一个本地端口,就像这样......

ssh -f -N -D 9000 [email protected]

…打开连接后,它会返回到命令提示符。然后我可以使用类似 proxychains 的东西来运行命令host.com

我的问题是:我如何连接/与同一个会话交互,以便我可以在 host.com 上获取远程 shell?我现在的做法是使用一个简单的方法打开另一个 ssh 会话,但我认为必须有一种方法可以只利用我打开的第一个会话。ssh [email protected]

答案1

如果它不是在启用多路复用的情况下创建的,那么您就无法创建。

下次,像这样启动后台会话:

ssh -f -N -M -S ~/.ssh/[email protected] -D 9000 [email protected]

这里-M启用多路复用主模式,并-S设置套接字路径。

现在,您可以使用通过同一连接打开第二个会话。可以通过提供、和其他各种选项来控制主服务器。(遗憾的是,这是最近才添加的。)ssh -S ~/.ssh/[email protected] dummyhost-O exit-O check-O forward

为了实现自动化,您可以使用以下选项.ssh/config

Host *
    ControlPath ~/.ssh/S.%l.%r@%h:%p
    ControlMaster auto
    ControlPersist 10m

设置ControlPath意味着你不需要-S每次都指定。

设置ControlMaster auto意味着每个新连接将自动作为多路复用主服务器在后台继续运行。(即使没有它,您仍然可以使用 启动新的主服务器ssh -fNM host)。

设置ControlPersist 10m意味着自动主机在没有任何活动会话时将停留 10 分钟。(这是最近添加的选项。)

请注意,通过多路复用连接进行批量传输将导致交互式会话变得非常慢......

答案2

省略 -f(后台 SSH)和 -N(不执行远程命令)参数,因此使用

ssh -D 9000[电子邮件保护]

相关内容