【问题标题】:Knowing if a remote port forward was successful?知道远程端口转发是否成功?
【发布时间】:2012-01-20 19:00:12
【问题描述】:

我正在尝试设置一些反向 ssh 隧道,这样我就可以通过使用公共 IP 的一些服务器来访问我的家庭网络。

当我运行这个命令时: ssh -R :[port_XX]:localhost:22 some_user@my_server

即使 "port_XX" 正在使用中,它仍然会成功地与 "my_server" 建立 ssh 连接。

如果我直接运行这个命令,当它给我一个警告时我可以看到问题: "警告:监听端口 [port_XX] 的远程端口转发失败"

但是,我正在在屏幕会话中使用 cron 作业启动此 ssh 会话。

如何以编程方式检查远程端口转发是否成功?

screen会话可以用"screen -ls"检查,ssh会话也很容易检查,但是远程端口转发...?

(如果这个问题不够清楚,请告诉我!我已经完成了我的研究,但还没有找到一个简单的解决方案。)

【问题讨论】:

    标签: linux bash ssh remote-access portforwarding


    【解决方案1】:

    尝试添加-o ExitOnForwardFailure=yes

    完整的命令类似于:

    ssh -N -R [port_XX]:localhost:22 -o ExitOnForwardFailure=yes user@host
    

    -N 只用于转发端口,无需打开远程shell;您也可以添加-f 以在后台发送进程,但如果您在屏幕下运行则无需...)

    【讨论】:

    • 啊哈!我知道有一种简单的方法可以做到这一点。我正在查看选项,但找不到一个很好的例子来说明如何做到这一点。谢谢!
    • 为我工作。问题:如果没有这个选项,转发失败后留下的隧道是否对任何东西有用,或者它只是死了?
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2011-08-10
    • 2010-11-02
    相关资源
    最近更新 更多