本帖最后由 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)
复制代码
至此使用成功!
|