穿透内网访问你的树莓派

前几天入手了一个树莓派3,然而不幸的是家中的网没有公网IP,直接访问肯定是没戏了,这时候突然想到了打洞这个词,我想ssh打洞肯定是可以的。

经过一番搜索,答案找到了,实现非常简单,步骤如下。

1.原料

实现内网穿透,你首先需要一台在公网的vps,哪个国家的都无所谓。

2.VPS配置

vps开启SSHD的GatewayPorts选项,开启方式如下:

vim /etc/ssh/sshd_config
# 找到GatewayPorts选项,将其变为yes

GatewayPorts yes
# 重启sshd服务
service sshd restart

3.树莓派配置

假设VPS的IP为1.1.1.1,远程转发的端口号为11111(端口号最好高于1024,否则需要使用root权限),远程服务器的ssh端口为22,登陆用户为username;
继续假设本地路由器需要转发的端口为22,路由器的在LAN中的IP地址为192.168.1.1。

当我们确认好了各个数字的意义后,就可以开始替换下面的命令了。

ssh -Nfg -R 11111:192.168.1.1:22 1.1.1.1 -p 22 -l username

ps.这一步需要输入username的密码,如果想要加入开机脚本,记得配置ssh的公钥,让路由器变得可信。

当完成以上配置,我们在VPS上使用命令netstat -nlp|grep sshd,就可以发现有两个监听端口号为11111的sshd进程,至此说明隧道搭建完毕!

4.测试

通过以上配置,我们在vps上建立了一个隧道,监听端口11111,并将此端口的数据映射到内网的树莓派上,我们在外网使用一下命令即可完成登陆。

ssh username@1.1.1.1 -p 22

# 打印调试信息
ssh username@1.1.1.1 -p 22 -v

发现问题

虽然通过这种方法可以在外网访问内网的机器,但是有个问题就是长时间不访问,会自动断开,这就比较尴尬了,经过一番搜寻,发现autossh可以解决这个问题。

开一篇新的文章来说这个问题吧。

参考资料

[1] https://blog.phpgao.com/ssh-reverse-tunnel.html

赞赏

微信赞赏支付宝赞赏

发表评论

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