我正在尝试设置一些反向ssh隧道,以便通过使用公共IP弹出一些服务器来访问我的家庭网络。
当我运行此命令时: ssh -R:[port_XX]:localhost:22 some_user @ my_server
即使正在使用“port_XX”,它仍然会成功连接到“my_server”。
如果我直接运行此命令,我会在发出警告时看到问题: “警告:侦听端口[port_XX]”
的远程端口转发失败但是,我正在使用cron作业在屏幕会话中启动此ssh会话。
如何以编程方式检查远程端口转发是否成功?
可以使用“screen -ls”检查屏幕会话,也可以轻松检查ssh会话,但远程端口转发......?
(如果这个问题不够明确,请告诉我!我已经完成了我的研究,但没有找到一个简单的解决方案。)
答案 0 :(得分:8)
尝试添加-o ExitOnForwardFailure=yes
完整的命令将类似于:
ssh -N -R [port_XX]:localhost:22 -o ExitOnForwardFailure=yes user@host
(-N
对于转发端口非常有用,无需打开远程shell;您也可以添加-f
在后台发送进程,如果您在屏幕下运行则不需要..)