使用autossh隧道搭建私服,访问内网家里的服务器
本帖最后由 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 # ifconfig |grep "inet addr"
inet addr:192.168.1.100Bcast:192.168.1.255Mask:255.255.255.0
inet addr:127.0.0.1Mask:255.0.0.0
编写 脚本: 该脚本可以根据你自己的需求进行优化和编写# 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
********* 靠,写到一半的时候家里断网了,什么情况???????*******之后重启防火墙$ sudo serviceiptablesrestart
iptables: Setting chains to policy ACCEPT: filter nat
iptables: Flushing firewall rules:
iptables: Unloading modules:
iptables: Applying firewall rules:
在虚拟机那台机器上执行刚才的脚本# sh a.sh
feel@google's password:
在远程机器上查看端口,可知已经被监听了$ sudonetstat-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
那么就这样就成功了。我们可以向登入远程机器的方式登入我们局域网那台服务器了$ ssh-p19999 root@localhost
root@localhost's password:
Last login: Sun Oct 18 01:52:57 2015 from localhost
# pwd
/root
# ifconfig
eth0 Link encap:EthernetHWaddr 00:0C:29:F0:EB:AE
inet addr:192.168.1.100Bcast:192.168.1.255Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fef0:ebae/64 Scope:Link
UP BROADCAST RUNNING MULTICASTMTU:1500Metric: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)
至此使用成功!
feel 好厉害
页:
[1]