5

我正在尝试设置一些反向 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 会话也很容易检查,但是远程端口转发......?

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

4

1 回答 1

8

尝试添加-o ExitOnForwardFailure=yes

完整的命令将类似于:

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

-N仅转发端口很有用,无需打开远程外壳;您也可以-f在后台添加发送进程,但如果您在屏幕下运行则不需要......)

于 2011-12-15T01:41:13.327 回答