当我跑
FOO=$(ssh -L 40000:localhost:40000 root@1.2.3.4 cat /foo)
Run Code Online (Sandbox Code Playgroud)
我得到 的内容/foo
,但随后断开连接。
我想要做的是以某种方式获取内容/foo
并保持连接打开,以便端口 40000 仍然转发到同一台服务器。这可能吗?
你可能会问,为什么不像这样发出两个 ssh 连接
FOO=$(ssh root@1.2.3.4 cat /foo)
ssh -L 40000:localhost:40000 root@1.2.3.4 -f -N
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我不能这样做的原因是 ip ( 1.2.3.4
) 是一个负载均衡器,它将连接转发到多个随机后端。每次ssh到1.2.3.4
不同的机器,/foo
每台机器的内容都不一样。此外,我通过转发端口 (40000) 发送的数据取决于/foo
. 如果我获取/foo
机器 A 上的内容,然后通过端口 40000 将数据发送到机器 B,则无法正常工作。