云计算百科
云计算领域专业知识百科平台

使用 FRP 实现内网穿透:通过公网服务器远程 SSH 访问局域网设备

使用 FRP 实现内网穿透:通过公网服务器远程 SSH 访问局域网设备

FRP(Fast Reverse Proxy) 是一款高性能的反向代理工具,专为内网穿透设计,支持 TCP、UDP、HTTP、HTTPS 等协议。本文将详细介绍如何通过 FRP 实现从公网远程 SSH 访问局域网中的 Linux 设备。


一、准备工作

  • 服务端(Server A):具有公网 IP 的 Linux 服务器(如云主机)
  • 客户端(Server B):位于局域网内的目标设备(需被远程访问)
  • 网络要求:
    • 服务端开放 bindPort(如 17000)及 remotePort 范围(如 60000–60500)
    • 客户端能访问外网(用于连接服务端)

二、下载 FRP

前往 FRP GitHub Releases 下载对应架构的版本。

通过 wget 命令通常会下载失败。建议直接从网站下载 tar 包,然后上传解压

以 Linux AMD64 架构 v0.66.1 为例:

wget https://github.com/fatedier/frp/releases/download/v0.66.1/frp_0.66.1_linux_amd64.tar.gz
tar -zxvf frp_0.66.1_linux_amd64.tar.gz
mv frp_0.66.1_linux_amd64 /usr/local/frp

💡 若客户端为 ARM 架构(如树莓派),请下载 arm64 版本。


三、服务端(frps)配置

1. 编辑配置文件 /usr/local/frp/frps.toml

# frps.toml

# 客户端连接端口
bindPort = 17000

# Dashboard 配置(用于监控)
webServer.addr = "0.0.0.0"
# web 服务端口
webServer.port = 7500
# 账号
webServer.user = "admin"
# 密码
webServer.password = "admin"

# Token 认证(必须与客户端一致)
auth.method = "token"
# token 可以更改
auth.token = "123456789"

# 限制客户端可绑定的端口范围(安全加固)
allowPorts = [
{ start = 60000, end = 60500 }
]

2. 创建 systemd 服务(开机自启)

创建 /etc/systemd/system/frps.service

[Unit]
Description=FRP Server Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

3. 启动并启用服务

# 重新加载 systemctl
systemctl daemon-reload
# 启动
systemctl start frps
# 设置开启自启
systemctl enable frps
# 查看状态
systemctl status frps

✅ 可通过浏览器访问 http://<公网IP>:7500 查看 Dashboard(用户名/密码:admin / yhrootadmin984826)


四、客户端(frpc)配置

1. 编辑配置文件 /opt/frp/frpc.toml

# frpc.toml

# 服务端地址(公网IP)
serverAddr = "x.x.x.x"
# 服务端 bindPort
serverPort = 17000

# 认证 Token(必须与服务端一致)
auth.token = "123456789"

# SSH 内网穿透配置
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "192.168.1.19" # 本地局域网IP(可写 127.0.0.1 如果运行在本机)
localPort = 22 # 本地 SSH 端口
remotePort = 60000 # 公网映射端口(必须在 allowPorts 范围内)

⚠️ 注意:localIP 若为本机,建议使用 127.0.0.1;若穿透其他设备,则填写其局域网 IP。

2. 创建 systemd 服务(客户端自启)

创建 /etc/systemd/system/frpc.service

[Unit]
Description=FRP Client Service
After=network.target

[Service]
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

3. 启动并启用服务

# 重新加载 systemctl
systemctl daemon-reload
# 启动
systemctl start frpc
# 设置开启自启
systemctl enable frpc
# 查看状态
systemctl status frpc

五、测试 SSH 连接

从任意公网机器执行

ssh -p 60000 test@x.x.x.x

其中:

  • x.x.x.x:服务端公网 IP
  • 60000:remotePort
  • test:Server B 上的用户名

✅ 成功登录即表示内网穿透配置成功!

六、错误排查

在配置 FRP 时,可能会遇到各种配置错误或连接失败的问题。建议在正式部署前使用以下命令进行本地测试

# 测试服务端
./frps -c ./frps.toml

# 测试客户端
./frpc -c ./frpc.toml

建议先手动运行测试:不要直接依赖 systemd 启动 七、参考

  • 官方项目:https://github.com/fatedier/frp
赞(0)
未经允许不得转载:网硕互联帮助中心 » 使用 FRP 实现内网穿透:通过公网服务器远程 SSH 访问局域网设备
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!