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
最终解决问题!