Closed. This question does not meet Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic

5年前关闭。



Improve this question




我想要的是如下:
  • 我可以在 Linux 机器的后台设置一个 ssh 隧道(实际上,我想在我的 .bashrc 中设置它)
  • 我可以在任何时候以任何用户的身份在这台机器上使用这个隧道运行进程,只有当 ssh 隧道进程处于事件状态时。
  • 当我退出终端/ session 时,ssh 隧道也应该退出。

  • 我知道我可以在 Linux 中建立一个后台 ssh 隧道,如下所示:
    ssh -Nf -L 8000:1.2.3.4:8000 [email protected]
    当我退出这个终端/ session 时,这个 ssh 隧道仍然会在后台运行。

    如何让它也自动退出?

    请注意:
    这个 http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/ 不符合我的要求。因为它要求我在 ssh 隧道进程之后立即启动我的进程,如果我的第一个 ssh 隧道任务完成,我需要再次设置 ssh 隧道以执行第二个任务。
    另一方面,如果我设置了很长的 sleep 时间,那么 ssh 隧道将不会随着我的终端退出。

    最佳答案

    这里有一个聪明的解决方案:

    http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/

    他们使用的命令是

    ssh -f -L 25901:127.0.0.1:5901 [email protected] sleep 10
    vncviewer 127.0.0.1:25901:1
    

    他们首先将 sleep 命令提供给远程服务器。它们指定任意短的时间(10 秒)。由于这是连接的“目标”,隧道将自动关闭。但是,它不会关闭,因为在那个时候其他命令(在他们的情况下 vncserver )访问了它。当 vncserver 结束时,隧道应该自动关闭。

    关于linux - 如何与 session 一起自动停止后台 ssh 隧道?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34693974/

    10-15 05:31