【问题标题】:Multi Hop, Self Closing, Background SSH Tunnel多跳、自关闭、后台 SSH 隧道
【发布时间】:2018-02-08 21:17:37
【问题描述】:

我正在尝试创建一个多跳 ssh 隧道,它在后台,并且自动关闭。我所拥有的是……

ssh -L 9999:localhost:9999 user@host1 -t ssh -L 9999:localhost:27017 -N 
-i ./mypem.pem user@host2

这成功创建了一个多跳 ssh 隧道,在我关闭隧道后关闭 host1 上的端口。但是,如果我尝试将它分叉到后台,就像这样......

ssh -f -L 9999:localhost:9999 user@host1 -t ssh -L 9999:localhost:27017 
-N  -i ./mypem.pem user@host2

它在后台运行,但在本地杀死进程确实会打开主机 1 上的端口。

关于自关闭、多跳、后台 ssh 隧道的任何想法?谢谢!

【问题讨论】:

  • -o "ExitOnForwardFailure yes" 工作吗?
  • 我试了一下:ssh -f -o ExitOnForwardFailure=yes -L 9999:localhost:9999 user@host1 ssh -L 9999:localhost:27017 -N -i ./mypem.pem user@host2 但是同样的问题,当我在本地关闭隧道时,主机上的 9999 没有打开。所以如果我尝试重新打开隧道,我会得到bind: Address already in use
  • 好的,要么尝试-o "ClearAllForwardings yes",要么转发ProxyCommand和-W
  • 您是否尝试过不使用-N,然后在末尾附加sleep X。比如:ssh -f -L 9999:localhost:9999 user@host1 -t 'ssh -L 9999:localhost:27017 -i ./mypem.pem user@host2 "sleep 3600"'
  • 我会切换到 ProxyCommand 方法;它在很多方面都更清洁。请参阅serverfault: "How do I do Multihop SCP transfers?"(同样适用于普通 SSH 和端口转发)和backdrift: "Using SSH ProxyCommand to Tunnel Connections"。

标签: linux bash shell ssh tunnel


【解决方案1】:

对于自动关闭,可以使用简单的sleep X 命令。

$ ssh -f -L 9999:localhost:9999 user@host1 \
-t 'ssh -L 9999:localhost:27017 -i ./mypem.pem user@host2 "sleep 3600"'

注意,这不使用-N 选项,该选项用于不运行命令,而是运行命令sleep 3600。这会使隧道保持 1 小时,然后自行关闭。

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 2021-10-28
    • 2016-04-14
    • 2011-12-14
    • 2017-12-07
    • 2020-10-26
    • 2011-05-23
    • 2017-02-16
    • 2012-03-15
    相关资源
    最近更新 更多