我正在做一些工作,需要使用代理链关闭一台机器,所以我连接到一个系统并绑定一个本地端口,就像这样......
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[电子邮件保护]