如何确定远程端口转发是否成功?

6
我正在尝试设置一些反向SSH隧道,以便通过具有公共IP的某些服务器来访问我的家庭网络。当我运行以下命令时:ssh -R :[port_XX]:localhost:22 some_user@my_server,即使“port_XX”被使用,它仍将成功地连接到“my_server”。如果我直接运行此命令,则在给出警告时可以看到问题:“警告:远程端口转发无法为侦听端口[port_XX]”。但是,我正在使用cron作业在screen会话中启动此ssh会话。如何以编程方式检查远程端口转发是否成功?可以使用“screen -ls”检查屏幕会话,也可以轻松检查ssh会话,但是远程端口转发呢?(如果这个问题不够清楚,请告诉我!我已经做过研究,但没有找到简单的解决方案。)
1个回答

9

尝试添加-o ExitOnForwardFailure=yes

完整命令将类似于:

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

(-N 可以用于仅转发端口,而无需打开远程 shell;如果您是在 screen 下运行,不需要添加 -f 以将进程发送到后台。)


啊哈!我知道有一种简单的方法可以做到。我正在查看选项,但找不到一个好的例子来说明如何做到这一点。谢谢! - Oarcinae
对我有用。问题:如果没有这个选项,转发失败后留下的隧道是否有用,还是无用的? - Eki

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