需求:
- 我有一台内网可以通过ssh 22端口访问的设备
- 操作系统是ubuntu server
- 我还有1台拥有公网IP的服务器,IP地址是
6.66.666.6666
- 我想随时从其他网段通过ssh访问我的ubuntu server设备
实现:
-
工具准备:frp
网址:https://github.com/fatedier/frp?tab=readme-ov-file
下载releases:https://github.com/fatedier/frp/releases
-
看一下我的设备要安装哪个发布版
内网设备:
~ λ uname -a
Linux raspberrypi 5.15.0-1015-raspi #17-Ubuntu SMP PREEMPT Mon Sep 12 13:14:51 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
好,安装frp_0.60.0_linux_arm64.tar.gz
tar -zxvf frp_0.60.0_linux_arm64.tar.gz
再看我的公网服务器:
ubuntu:~$ uname -a
Linux VM-20-9-ubuntu 5.15.0-86-generic #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
好,安装frp_0.60.0_linux_amd64.tar.gz
tar -zxvf frp_0.60.0_linux_amd64.tar.gz
- 配置服务器
官网已经给了教程,修改frps.toml
文件,我就用官方给的默认的7000
端口,注意7000
是服务器转发端口;
这里就可以在服务器上运行./frps -c ./frps.toml
启动frp工具的server了,注意,当前的配置系统重启就失效了; - 配置客户端
官网已经给了教程,修改frpc.toml
文件,我就用官方给的默认的6000
端口,注意6000
是客户端访问端口,也就是访问内网设备ssh服务时,要把默认22
端口改为6000
;
# frpc.toml
serverAddr = "6.66.666.6666" # 就改了这个服务器地址,其他不变
serverPort = 7000[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
这里就可以在内网ubuntu设备上运行./frpc -c ./frpc.toml
启动frp工具的client了,注意,当前的配置系统重启就失效了;
- 这时候,就可以通过
6.66.666.6666:6000
尝试登录内网设备了,好,我已经理论上成功登录了——实际上没有 - 看了一下,我的买的腾讯云服务器默认是有防火墙的,要给这两端口搞个白名单
- 通过
6.66.666.6666:6000
尝试登录内网设备,好,确实可以,如下图,这里安利一下谷歌商店下的APP:ConnectBot
- 但是这时候发现,我重启公网服务器或者内网ubuntu设备,都会导致内网穿透失效,原因其实就是该服务没设置开机重启罢了
- 官方真贴心,又提供了工具:systemd
网址:https://gofrp.org/zh-cn/docs/setup/systemd/
但是呢,贴心的官方也是有那么一点点高看我们的,官方给的例子都是对服务器的配置,不够细心的话就会把客户端当成服务端配;
好,
这里我是这么干的:
- 公网服务器和内网ubuntu设备都安装 systemd,
apt install systemd
- 公网服务器创建 frps.service 文件
sudo vim /etc/systemd/system/frps.service
写入内容:
由于我已经把frp_0.60.0_linux_amd64
移动到/opt
目录,并重命名为frp
所以我就相对官方改了这一句
# 启动frps的命令,需修改为您的frps的安装路径,这里注意是frps
ExecStart = /opt/frp/frps -c /opt/frp/frps.toml
- ubuntu设备创建 frpc.service 文件
sudo vim /etc/systemd/system/frpc.service
写入内容:
由于我已经把frp_0.60.0_linux_arm64
移动到/opt
目录,并重命名为frp
所以我就相对官方改了这一句
# 启动frps的命令,需修改为您的frps的安装路径,这里注意是frpc
ExecStart = /opt/frp/frpc -c /opt/frp/frpc.toml
好,上面的操作意思就是,配置使用工具systemctl 运行 /opt/frp/frps -c /opt/frp/frps.toml
或/opt/frp/frpc -c /opt/frp/frpc.toml
-
最后,在公网服务器和内网ubuntu设备均设置 frps 开机自启动
公网服务器:sudo systemctl enable frps
内网ubuntu设备:sudo systemctl enable frpc
-
后面,我分别尝试了重启公网服务器和内网ubuntu设备,结果当然都是ok的;
好,圆满了