检查并自动重新建立反向 ssh 隧道

check and auto re establish reverse ssh tunnel

我正在与 $ ssh -fN -R 19999:localhost:22 -i aws-mycert.pem ubuntu@my.dyndns.com 建立反向隧道,需要确保它保持正常运行并且 运行 即使在服务器重置后也是如此。我如何检查 cron 脚本中的连接,然后在需要时自动重新建立连接?

一个简单的方法是使用 Netcat。命令 nc -z localhost 19999 将检查本地端口 19999 中是否有东西正在侦听,因此您可以使用: nc -z localhost 19999 || ssh -fN -R 19999:localhost:22 -i aws-mycert.pem ubuntu@my.dyndns.com 如果需要重新创建隧道。

然而,这仅检查隧道是否已启动,但它可能已过时。最好的解决方案是使用 autossh。只需将它安装在您的机器上并使用:

autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -fN -R 19999:localhost:22 -i aws-mycert.pem ubuntu@my.dyndns.com

那么你只需要在服务器启动时运行这个命令,这取决于你的分布。

您可以在 https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/.

找到有关使用 autossh 的更多详细信息