如何在会话结束时自动停止背景ssh隧道?

3
我想要做的是以下内容:
  1. 我可以在Linux机器上后台设置一个ssh隧道(实际上,我想在我的.bashrc中设置它)
  2. 只要ssh隧道进程处于活动状态,我就可以随时以任何用户身份在此机器上使用该隧道运行进程。
  3. 当我从终端/会话退出时,ssh隧道也应该自动退出。
我知道我可以在Linux中建立后台ssh隧道,如下所示:
ssh -Nf -L 8000:1.2.3.4:8000 username@2.3.4.5
然而,当我退出这个终端/会话的时候,这个ssh隧道仍将在后台运行。请问如何让它自动退出?
请注意:
这个连接http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/不符合我的要求。因为它要求我在ssh隧道进程之后立即启动我的进程,如果我的第一个任务使用ssh隧道完成,我需要再次设置ssh隧道以进行第二个任务。 另一方面,如果我设置了较长的睡眠时间,则ssh隧道将无法随我的终端退出。
1个回答

2
这里有一个聪明的解决方法: http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/ 他们使用的命令是:
ssh -f -L 25901:127.0.0.1:5901 me@remote.example.org sleep 10
vncviewer 127.0.0.1:25901:1

他们首先向远程服务器发送sleep命令。他们指定了一个任意短的时间(10秒)。由于这是连接的“目标”,隧道将自动关闭。然而,它没有关闭,因为在那段时间内,另一个命令(在他们的情况下是vncserver)访问了它。当vncserver结束时,隧道应该自动关闭。


谢谢这个解决方案!但我不得不说,它并不符合我的要求。请查看我的问题更新以了解原因。 - Qiu Yangfan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接