本文主要介绍如何使用ngrok让可以外网访问内网中的树莓派
背景
本人家里有一台树莓派3b,常年开机,由于没有外网固定IP,所以在公司无法直接ssh链接到树莓派,于是想到了ngrok这个内网穿透工具。在这里写一篇文章,帮助有和我一样问题的朋友。
什么是ngrok
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。
怎么使用ngrok
- 首先去官网注册一个ngrok账号,地址是https://ngrok.com/。
- 下载ngrok,树莓派3b下载的是arm版的,这里你可以本地下载传到树莓派,也可以直接在树莓派上执行命令下载
mkdir ngrok && wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
#进入文件夹,解压
cd ngrok
unzip ngrok-stable-linux-arm.zip
#如果提示没有unzip命令,先安装unzip
apt-get install unzip
-
这时候要去官网找你的授权码,如图
箭头所指,后一面的一串就是你的授权码。
或者去左侧 Auth打码的地方就是你的授权码
-
然后在树莓派中执行
./ngrok authtoken xxxxxxxxx # xxxxxxx 换成你的授权码
提示
Authtoken saved to configuration file: /root/.ngrok2/ngrok.yml # 后面这个是我的路径,可能与你不一样
证明保存你的认证信息成功
-
然后执行
./ngrok tcp 22
然后提示
ngrok by @inconshreveable (Ctrl+C to quit) Session Status online Account 你的名字 (Plan: Free) Version 2.2.8 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding tcp://0.tcp.ngrok.io:14555-> localhost:22 Connections ttl opn rt1 rt5 p50 p90 7 0 0.00 0.00 0.61 600.26
表明’0.tcp.ngrok.io’这个域名的14555端口已经转发到了你树莓派的22端口
-
然后你就可以通过XShell等工具连接树莓派。地址是:0.tcp.ngrok.io ,ssh端口是显示的端口,我这里是14555,然后点击连接,用户名密码还是你树莓派的用户名密码。这时候你就会发现已经可以ssh连接到你内网的树莓派了
怎么查看ngrok的转发情况
官网登录后左侧 Status
显示的就是你这个账号的所有转发情况,域名、端口、客户端地址、地区和转发开始时间都可以查看到
进阶
安装上面的步骤,你会发现,你关闭树莓派的ssh客户端后,转发会停止,这时候需要把ngrok放到你的后台运行,这里有很多方法,我使用的是比较简单的screen
# 首先安装screen
apt-get install screen
# 创建一个名字为ngrok的screen会话 (名字随意起)
screen -S ngrok
# 自动进入该会话 ,然后执行ngrok
./ngrok tcp 22
# Ctrl + A + D 退出该会话,会话会挂在后台
# 简单的 screen 命令
# 列出所有的会话
screen -ls
# 杀死某个会话
kill PID
# 恢复进入某个会话
screen -r 会话名字
结束语
这里只是介绍了ngrok最简单的用法,ngrok功能很强大,大家有兴趣深入学习的话可以去官网看一下。
版权属于:作者名称
本文链接:https://benzina.cn/archives/8/
转载时须注明出处及本声明