写在最前
很多在使用终端的时候都很难躲避关于局域网难以访问的问题,比如有些时候离设备离得远,又必须要使用ssh或scp去访问。这篇文章将会提供通过映射穿透来实现。如果手上刚好有一台服务器的话,开源项目Frp
将是不错的解决方案。
什么是Frp
Frp
是一项Github的开源项目,专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
如果没有服务器,看到这里就可以退出去了。
正文
部署源代码
首先打开上面的Github链接,找到其中的releases发布页,找到对应自己设备架构的版本:
一般安卓设备是arm64
版本,Linux服务器是amd64
版本(可以在服务器的Shell中使用arch
查询自己服务器的架构,输出内容如果是x86_64
即为amd64
版本)
我这里以安卓设备和Linux服务器为例子,下载frp_0.45.0_linux_amd64.tar.gz
和frp_0.45.0_linux_arm64.tar.gz
。之后分别传输到安卓设备和服务器上解压,解压后的文件夹位置随意。
配置文件
我们需要分别对两个设备的文件进行配置。
对Linux服务器(也就是具备公网ip的设备),我们需要配置frps.ini
文件:
[common]
bind_port = 7000 #用于连接远程设备的端口
token = 12345678 #密码随意
之后在Frp的文件夹目录下运行服务:
./frps -c frps.ini
可以在服务器的/etc/profile.d
文件夹下创建一个sh脚本实现开机自启动:
/home/ubuntu/frp/frps -c frps.ini
至此服务器的配置完成。
接下来配置客户端设备,也就是局域网内的设备,我们需要对frpc.ini
进行更改:
[common]
server_addr = 127.0.0.6 服务器的公网ip
server_port = 7000 服务器Frp用于连接的端口
token = 12345678 #服务端的密码
[ssh]
type = tcp 连接协议类型
local_ip = 127.0.0.1 本地局域网ip
local_port = 22 本地被映射的端口
remote_port = 6000 服务器对外映射的端口
这样就实现了下面的端口映射
127.0.0.1:22 --> 127.0.0.6:6000
我们就可以可以直接通过访问127.0.0.6:6000
来访问127.0.0.1:22
运行客户端:
./frpc -c frpc.ini
记得为服务器防火墙添加端口开放。