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

时间:2018-08-31 03:33:29

标签: amazon-s3 cron ssh-tunnel dyndns

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

1 个答案:

答案 0 :(得分:1)

一种简单的方法是使用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的更多详细信息。