frp内网穿透--使用记录
本文最后更新于 2024年5月21日 下午
使用内网穿透进行远程 ssh 访问
如果A、B电脑不在同一局域网的情况下,并且都没有公网IP,A、B之间要想访问就需要内网穿透了
一种方案是购买服务商提供的内网穿透工具,如 cpolar:

固定端口号套餐149/年,不用折腾。
另一种方案是购买一个有公网 IP 的服务器做“桥梁”,但是最低配的轻量应用服务器价格都在一百左右,不是特别划算。最近年底腾讯云和阿里云活动,入门的轻量应用服务器价格60几块,果断入手~~~

1 事先准备
- 具有公网 IP 的服务器(ubuntu) —— 👌
- 发起访问的电脑(windows) —— 👌
- 被访问的电脑(Ubuntu) —— 👌
2 下载 frp
frp GitHub 项目地址: https://github.com/fatedier/frp

分别针对 具有公网IP的服务器 和 被访问的电脑 下载相应的 frp 系统版本。我这里的两个主机都是 Ubuntu 系统,所以下载 frp_0.53.2_linux_amd64.tar.gz 到两个主机上,注意:每个主机上都有一个相同版本的 frp_0.53.2_linux_amd64.tar.gz。
解压后,对于 具有公网IP的服务器 使用的是 frps (frp server):

对于 被访问的电脑 使用的是 frpc (frp client):

3 修改 frp 配置文件
3.1 具有公网IP的服务器 的 frps.toml

默认的就行~
3.2 被访问的电脑 的 frpc.toml

serverAddr:修改为具有公网IP的服务器的 IPname:随意填type:ssh 访问填 tcpremotePort:默认的 6000 就行

4 设置开机自启
使用 frps -c frps.toml、frpc -c frpc.toml 来运行 frp 服务。但是每次开机后都要在两台主机上分别运行 frp 服务,比较麻烦。使用 systemd 来实现 frp 服务的开机自启。
分别在 具有公网IP的服务器 和 被访问的电脑 的主机上使用 systemd 配置各自的 frp 开机自启服务。
4.1 具有公网IP的服务器 的 frps.service
sudo vim /etc/systemd/system/frps.service
1 | |
只需要针对你的路径修改 [Service] 下的
ExecStart,其余的不用修改
然后运行 sudo systemctl daemon-reload 和 sudo systemctl enable --now frps.service 以启用 frps 开机自启。
4.2 被访问的电脑 的 frpc.service
sudo vim /etc/systemd/system/frpc.service
1 | |
只需要针对你的路径修改 [Service] 下的
ExecStart
然后运行 sudo systemctl daemon-reload 和 sudo systemctl enable --now frpc.service 以启用 frpc 开机自启。
5 添加端口规则
需要在 具有公网IP的服务器 的控制台防火墙里放行 6000、7000 端口:

6 登录使用
在 发起访问的电脑 端远程 ssh 访问 被访问的电脑 端。
在 发起访问的电脑 端使用 ssh 工具登录 具有公网IP的服务器 。注意:登录地址是你购买的服务器的 IP,用户名是 被访问的电脑 端的用户名,密码是 被访问的电脑 端的密码,端口是 6000 。
例如:

6.1 VSCode 登录配置
捣鼓了好久才登录成功,配置如下:

附
最近 fedora40 发布了,想装个试一下。在按照此篇教程重新配置 frpc 的时候出现了一些问题。
在设置好守护进程后,frpc 并没有正常运行,使用 sudo systemctl status frpc.services 看到 (code=exited, status=203/EXEC) 的错误,网上查了一下是 SELinux 的原因,需要将 SELinux 关闭。
还有一种办法不用关闭 SELinux :
- 移动
frpc到/usr/local/bin/下,然后再运行restorecon -Rv /usr/local/bin
最终解决问题!