有时候,把树莓派放在宿舍,但是我人在自习室,想随时用手机ssh到树莓派看看情况,苦于宿舍没有独立ip无法直接ssh;还有时候,想帮朋友远程安装Gentoo系统,可惜他也没有公网ip。这时候,就可以使用一个叫做frp的服务,通过一个有独立ip的vps(服务端)来访问树莓派或者朋友的电脑(客户端)。

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。其功能在github页面有写:

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
  • 对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

本文仅仅讨论第三条功能,需要使用前两条功能可查看github上的说明。frp可以在这里下载,下载时候注意架构,电脑用x86或者amd64,树莓派用arm,路由器视情况自己查查。

在服务端和客户端分别下载并解压,然后按如下方式进行配置(请自行修改黑体字):

vim frps.ini  #客户端配置frps.ini

[common]
bind_port = 7000 #服务端口
token = password #密码
vim frps.ini  #客户端配置frps.ini

[common]
server_addr = jerryding.site #换成你自己的服务器ip或域名
server_port = 7000 #上面提到的服务器端口
token = password #密码和服务端配置文件要一致

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22 #客户端ssh端口
remote_port = 6000 #想通过服务端哪个端口访问客户端

填好了配置文件,在服务端还需要开放防火墙的6000、7000端口(配置文件涉及到的端口),具体自行解决。

最后,我们可以开始使用了。还需要注意一点,frp在你关了窗口后自己就断了,因此需要使用screen或者nohup让他能后台运行。

screen使用方法:

  • screen -S XXXX #XXXX是新建的窗口名
  • ctrl+a+d #退出窗口
  • screen -rD #恢复之前关闭的窗口

那么,我们先在服务端新建窗口,运行frp:

screen -S frps
./frps -c ./frps.ini

然后在客户端进行同样的操作:

screen -S frpc
./frpc -c ./frpc.ini

如果看到两边都是蓝色字,写着类似连接成功的字样,就好了,关闭screen就能用了。

想要访问客户端,只需要ssh服务端的6000端口即可。

3 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *