authssh用来帮助ssh程序在中断后自动重连,在建立隧道的场合相当好用。它是怎么检测链路的呢?
我们先来看一下它的使用方法:

autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS]
举例:
autossh -M 10001:10002 -N -R 10000:127.0.0.1:22 example.com

这个例子的意思是,执行ssh -N -R 10000:127.0.0.1:22 example.com,并且设置监视端口10001和10002用于监视这个ssh会话。

autossh最重要的参数自然就是监视端口-M port[:echo_port]。按是否指定echo_port分两种情况。

一、同时指定port和echo_port。echo_port必须是远程echo_service的端口。autossh会设置本地端口转发,将本地端口port映射到远程echo_port端口。autossh会定期往port发送一段检测消息,如果能够收到同样的信息,就认为链路是正常的。示意图如下:

 

二、只指定port。表示不存在远程echo_service。这时autossh将本地端口port转发到远程端口port(不再是什么echo port),同时将远程端口port转发回本地的port + 1端口。然后定期往port发送检测消息,如果port + 1端口能够收到同样的消息,就认为链路是正常的。示意图如下:

 

上面说的这些检测消息,都是走SSH隧道的。转发端口绑定的都是地址127.0.0.1,不需要防火墙上打开。

貌似有的版本可以省略参数-M port,相当于自动选择一个随机端口port和port + 1,原理与第二种相同。
————————————————
版权声明:本文为CSDN博主「wesleyflagon」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wesleyflagon/article/details/85304336

发表评论

邮箱地址不会被公开。 必填项已用*标注