我试图设置一些反向的SSH隧道,所以我可以访问我的家庭networking通过反弹一些公共IP的服务器。
当我运行这个命令:ssh -R:[port_XX]:localhost:22 some_user @ my_server
即使正在使用“port_XX”,它仍然会成功连接到“my_server”。
如果我直接运行这个命令,当我给出警告时,我可以看到问题:“警告:监听端口[port_XX]的远程端口转发失败”
但是,我正在使用cron作业在屏幕会话内启动此ssh会话。
如何以编程方式检查远程端口转发是否成功?
屏幕会话可以用“screen -ls”检查,ssh会话也很容易检查,但远程端口转发…?
(请让我知道,如果这个问题不够清楚!我已经做了我的研究,但还没有find一个简单的解决scheme。)
尝试添加-o ExitOnForwardFailure=yes
完整的命令将是这样的:
ssh -N -R [port_XX]:localhost:22 -o ExitOnForwardFailure=yes user@host
( -N
对于转发端口很有用,不用打开远程shell;你也可以在后台添加-f
发送进程,如果你正在屏幕下运行则不需要)