永久后台ssh连接以创建反向隧道:正确的方法是什么?
相关问题:启动从服务器到客户端的ssh连接 那里的答案对我很有帮助,此命令可以满足我的需要: ssh -R 2225:localhost:22 loginOfServerWithPublicIP@publicIP 因此,我编写了脚本来始终重新连接: #!/bin/bash while true; do echo "try to connect..." ssh -o ServerAliveInterval=240 -R 2225:localhost:22 user@host echo "restarting in 5 seconds.." sleep 5 done 并将其添加到中/etc/crontab。但是我发现,只要我从shell中“手动”执行它,它就会起作用,但是如果被cron调用,ssh将连接并立即完成。(因此,上面的脚本一直都在重新连接) 从中man ssh,我发现对于后台连接,我应该使用-nkey 来调用它,但这没有帮助。然后,我只是四处寻找类似的脚本,发现如果调用tail -f something,它可以工作,即一些“ neverending”命令,所以我刚刚创建了一个空文件/tmp/dummy_file,现在我的ssh命令如下所示: ssh -o ServerAliveInterval=240 -R 2225:localhost:22 -n user@host tail -f /tmp/dummy_file 现在可以使用!但是,这种解决方案似乎有点丑陋,而且我还不太了解这种行为的实际原因。只是偶然,我尝试调用bash而不是tail -f(bash我也觉得它是“无休止的”命令)而不是调用。 因此,任何人都可以解释这种现象吗?创建后台ssh连接以保持反向ssh隧道正常的正确方法是什么?