Autossh打洞

autossh介绍:web

  • autossh 是一个用来启动 ssh 并进行监控的程序,可在须要时重启 ssh,若是程序问题或者是网络问题。其灵感和机制来自于 rstunnel (Reliable SSH Tunnel). autossh 1.2 的方法已经改变:autossh 使用 ssh 来构造一个 ssh 重定向循环(本地到远程和远程到本地),而后发送测试数据并得到返回结果。shell

  • 内网主机主动链接到外网主机,又被称做反向链接(Reverse Connection),这样NAT路由/防火墙就会在内网主机和外网主机之间创建映射便可相互通讯了。但这种映射是路由网关自动维持的,不会持续下去,若是链接断开或者网络不稳定都会致使通讯失败,这时内网主机须要自动重连机制了。浏览器

安装:服务器

  • yum install autossh网络

实例:less

  • autossh -M 9090 -fCNR 18081:10.10.3.x:8080 root@x.x.x.xssh

  • autossh -M 9091 -fCNR 18082:10.10.3.x:80 root@x.x.x.xide

  • autossh -M 9091 -fCNR 18083:127.0.0.1:80 root@x.x.x.x测试

  • 这样将在'x.x.x.x'主机上开启一个本地侦听地址:18081,访问本地18081将转发至10.10.3.x:8080this

      -M 9090参数,负责经过9090端口监视链接状态,链接有问题时就会自动重连。
      -M 是服务器echo机制使用的端口。

  • autossh -M 5678 -CqTfnN -D 192.168.0.2:7070 freeoa@remote-host

      参数解释:

  • -M为autossh参数, -CqTfnN -D 为ssh参数

  • -M 5678 : 负责经过5678端口监视链接状态,链接有问题时就会自动重连

  • -C :启动数据压缩传输

  • -q :安静模式运行,忽略提示和错误

  • -T :不占用shell

  • -f :后台运行

  • -n :配合 -f 参数使用

  • -N :不执行远程命令,专为端口转发度身打造

  • -D 192.168.0.2:7070 :指定一个本地机器 “动态的“ 应用程序端口转发,若是不加IP地址,默认只监听127.0.0.1

使用场景:

  • 场景:A是内网服务器192.168.1.10(内部屡次nat,没法使用公网IP),B是内网用户转发代理服务器192.168.1.12,C是公网服务器x.x.x.x,D是用户PC

  • 需求:D访问A内网服务器web 8080

  • 方法:
    1.B安装autossh

          2.B执行autossh -M 9091 -fCNR 18080:192.168.1.10:8080 root@x.x.x.x

          3.设置B能够无密码登录C

          4.D上打开putty,设置正向代理,点击Add,save保存

        5.D上打开浏览器:http://127.0.0.1:18080 ,访问到内网A服务器web应用


补充:

注意几个参数:

AUTOSSH_MAXLIFETIME:
    Sets the maximum number of seconds the process should live for before killing off the ssh child and exiting.
AUTOSSH_POLL:
    poll time in seconds; default is 600.

     在实际应用中,发现每隔10分钟,会断线重连,这对应用形成很大影响。

     使用AUTOSSH_MAXLIFETIME参数设定转发存活时间,在这个时间内不会断,可是时间到后,会kill掉进程,没法重连。

     使用AUTOSSH_POLL,能够指定多长时间断线重连,官网原话,实际上没看懂,但愿理解的同道指点。

    AUTOSSH_POLL	  - poll time in seconds; default is 600.
    			    Changing this will also change the first
			    poll time, unless AUTOSSH_FIRST_POLL is
			    used to set it to something different.
			    If the poll time is less than twice the 
			    network timeouts (default 15 seconds) the 
			    network timeouts will be adjusted downward 
			    to 1/2 the poll time.

     在实际中,使用这个参数,依然没法解决个人问题,authossh其实是调用ssh,能够再加上 -o TCPKeepAlive=yes -o ServerAliveInterval=30 ,解决频繁断线问题。

     一个例子:

     autossh -M 9098 -CNR  x.x.x.x:443:10.x.x.x:443 root@x.x.x.x -f AUTOSSH_POLL  86400 -o TCPKeepAlive=yes -o ServerAliveInterval=30

相关文章
相关标签/搜索