本帖最后由 feel 于 2015-10-17 18:43 编辑  
 
应同事alex的要求:他想实现远程登入家里的局域网服务器。 情况是这样的。家里有台服务器(笔记本即可)。一台外网服务器。 想通过在公司远程登入家里的那台局域网服务器。  
开始我的想法是:搭建openvpn 。但是毕竟不是什么人都能搭建成功,而且还有很多缺点。 操作复杂 一个周末的下午我突然想起可以通过隧道反向代理出去。也是一个非常不错的方法。-->(这个想法来自我现在的上google 的方式) 理论基础:autossh 是一个用来启动 ssh 并进行监控的程序,可在需要时重启 ssh,例如程序挂掉或者是网络出现问题。其灵感和机制来自于 rstunnel  (Reliable SSH Tunnel). autossh 1.2 的方法已经改变:autossh 使用 ssh 来构造一个 ssh 重定向循环(本地到远程和远程到本地),然后发送测试数据并获得返回结果。  
 实验环境: 一台外网服务器。                   一台局域网服务器(我这里使用虚拟机)  
 外网机器ip (这里设置为google)*** 虚拟机ip查看 为  192.168.1.100    - [root@centos ~]# ifconfig |grep "inet addr"
 
 -           inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
 
 -           inet addr:127.0.0.1  Mask:255.0.0.0
 
  复制代码 
编写 脚本: 该脚本可以根据你自己的需求进行优化和编写 - [root@centos ~]# cat a.sh
 
 - #!/bin/bash
 
 - autossh -M 5678 -NR 19999:localhost:22 feel@google
 
  复制代码外网服务器 打开端口 19999  
添加防火墙规则: - -A INPUT -p tcp -m state --state NEW -m tcp --dport 19999 -j ACCEPT
 
  复制代码 
******* ** 靠,写到一半的时候家里断网了,什么情况??????? ******* 之后重启防火墙 - [feel@cloud ~]$ sudo service  iptables  restart
 
 - iptables: Setting chains to policy ACCEPT: filter nat      [  OK  ]
 
 - iptables: Flushing firewall rules:                         [  OK  ]
 
 - iptables: Unloading modules:                               [  OK  ]
 
 - iptables: Applying firewall rules:                         [  OK  ]
 
  复制代码 
在虚拟机那台机器上执行刚才的脚本 - [root@centos ~]# sh a.sh
 
 - feel@google's password:
 
  复制代码 
在远程机器上查看端口,可知已经被监听了 - [feel@cloud ~]$ sudo  netstat  -tanpl |grep 19999
 
 - tcp        0      0 127.0.0.1:19999             0.0.0.0:*                   LISTEN      6109/sshd           
 
 - tcp        0      0 ::1:19999                   :::*                        LISTEN      6109/sshd     
 
  复制代码 
 
那么就这样就成功了。我们可以向登入远程机器的方式登入我们局域网那台服务器了
 - [feel@cloud ~]$ ssh  -p  19999   root@localhost
 
 - root@localhost's password:
 
 - Last login: Sun Oct 18 01:52:57 2015 from localhost
 
 - [root@centos ~]# pwd
 
 - /root
 
 - [root@centos ~]# ifconfig
 
 - eth0      Link encap:Ethernet  HWaddr 00:0C:29:F0:EB:AE  
 
 -           inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
 
 -           inet6 addr: fe80::20c:29ff:fef0:ebae/64 Scope:Link
 
 -           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
 -           RX packets:10482 errors:0 dropped:0 overruns:0 frame:0
 
 -           TX packets:5908 errors:0 dropped:0 overruns:0 carrier:0
 
 -           collisions:0 txqueuelen:1000
 
 -           RX bytes:10781447 (10.2 MiB)  TX bytes:526988 (514.6 KiB)
 
  复制代码 
至此使用成功!  
  |