我正在与$ ssh -fN -R 19999:localhost:22 -i aws-mycert.pem [email protected]
建立一个反向隧道,并且需要确保它在服务器重置时保持运行。如何在cron脚本中检查连接,然后在需要时以自动方式重新建立连接?
一种简单的方法是使用Netcat。命令nc -z localhost 19999
将检查本地端口19999中是否有内容正在侦听,因此您可以使用:nc -z localhost 19999 || ssh -fN -R 19999:localhost:22 -i aws-mycert.pem [email protected]
在需要时重新创建隧道。
但是,这只会检查隧道是否已启动,但可能是陈旧的。最好的解决方案是使用autossh。只需将其安装在您的机器中并使用:
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -fN -R 19999:localhost:22 -i aws-mycert.pem [email protected]
然后,您只需在服务器启动时运行此命令,这取决于您的分发。
您可以在https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/找到有关使用autossh的更多详细信息。