前言:本教程将教会您
如何暴露内网的http服务到公网访问
如何在远程公网ssh连接到自己家里的内网机器
0. 下载及其相关注意事项
云服务器上使用的是frp的服务端。在安装之前首先要明确当前使用的服务器的系统信息,否则使用了不匹配的frp版本,会出现:Segmentation fault的错误。可以通过arch命令查看系统信息。
arch
aarch64 #ARM架构
x86_64 #X86架构
对应frp版本:
frp_0.35.1_darwin_amd64.tar.gz #Mac OS系统
frp_0.35.1_freebsd_386.tar.gz #FreeBSD 32位系统
frp_0.35.1_freebsd_amd64.tar.gz #FreeBSD 64位系统
frp_0.35.1_linux_386.tar.gz #Linux 32位系统
frp_0.35.1_linux_amd64.tar.gz #Linux 64位系统
frp_0.35.1_linux_arm.tar.gz #Linux 32位嵌入式系统
frp_0.35.1_linux_arm64.tar.gz #Linux 64位嵌入式系统
frp_0.35.1_windows_386.zip #Windows 32位系统
frp_0.35.1_windows_amd64.zip #Windows 64位系统
-
再服务器上下载对应的包
根据你的版本进行选择
wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz
-
在个人的内网主机上下载对应的包
进入frp目录并查看目录下的文件,其中主要的是以下四个文件, 如果你的版本太新的话,你的文件后缀会是.toml的
cd frp && ls
frpc #客户端的执行程序
frpc.ini #客户端的配置文件
frps #服务端的执行程序
frps.ini #服务端的配置文件
-
配置服务器的frps.ini
记得把注释都删除
[common] bind_port = 7000 # 这个是跟客户端(内网主机)交互的端口 vhost_http_port = 8080 # 你如果在客户端配置了http的请求,这里就需要配置该参数或者vhost_https_port https我没有用到就没配置,并且 你的客户端的local_port是多少,你这个就要配置多少
-
配置客户端的frpc.ini
[common] # 这个不能乱填 这个是公共的 server_addr = 服务器ip #这里是服务器ip server_port = 7000 [http] # 这个你随便填都没啥,每个中括号之间是一个配置环境 当前就是http的配置环境 type = http # 指定请求的类型 配置了这个后 上面的服务端配置就需要加vhost_http_port local_ip = 127.0.0.1 # 本地对应服务ip是多少 local_port = 8080 # 本地服务port是多少 custom_domains = 服务器的域名或者ip # 如果你指定了http服务 这个是必须要填的 ,这个是域名 ,要是你没有域名就填ip就行 [ssh] # 如上 type = tcp # local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 # 这个很重要,你在当前客户端设置后, 当客户端和服务端连接后,服务端会监听6000端口的请求,如果有6000的请求进来,那么客户端就会走当前的配置服务,走本机的22 ssh服务
-
启动
服务端启动
./frps -c frps.ini
客户端启动
./frpc -c frpc.ini
-
测试
http测试
ssh测试 (mac测试远程ssh需要开放端口,关闭防火墙,开启共享-远程登录)
1. frp http和ssh穿透流程图解
绿色为http请求的穿透过程
红色的为ssh连接的穿透过程
(马赛克部分为本人的公网服务器ip)