如何自动停止后台ssh隧道与会话?

时间:2016-01-09 13:22:08

标签: linux ssh ssh-tunnel

我想要的是如下:

  1. 我可以在Linux机器上的后台设置一个ssh隧道(实际上,我想在我的.bashrc中设置它)
  2. 我可以随时使用此隧道作为此计算机上的任何用户运行进程,仅当ssh隧道进程处于活动状态时。
  3. 当我退出终端/会话时,ssh隧道也应该退出。
  4. 我知道我可以在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 个答案:

答案 0 :(得分: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结束时,隧道应该自动关闭。