UFI003(骁龙410 随身WiFi)FRP 远程访问部署手册

UFI003(骁龙410 随身WiFi)FRP 远程访问部署手册

目标设备:高通 MSM8916 (骁龙410) / OpenStick Debian 11 (bullseye) / handsomekernel 5.15
用途:通过 FRP 实现公网远程 SSH 访问(密钥认证,免密码)
版本:frp v0.71.0(2026-09 部署实战验证)


一、整体架构

[410 随身WiFi]  --frpc-->    [公网服务器 frps]   <--SSH--  用户(任何地方)
   wlan0 上网                  阿里云 ECS                  ssh -p 6022 -i key
   内网直连 192.168.137.47     端口 7000(控制)              密钥认证
                              端口 6022(转发SSH)
  • frpc(客户端):运行在 410 上,主动向外连接 frps(无需公网 IP)
  • frps(服务端):运行在公网服务器,接收 frpc 注册并开放转发端口
  • 安全:token 认证(frps↔frpc)+ SSH 密钥认证(用户↔设备)+ 关闭密码登录

二、服务端 frps 部署(公网服务器,amd64)

# 1. 下载安装(如 GitHub 直连不通,用 ghfast.top 镜像)
cd /tmp
wget https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.71.0/frp_0.71.0_linux_amd64.tar.gz
tar xzf frp_0.71.0_linux_amd64.tar.gz
cp frp_0.71.0_linux_amd64/frps /usr/local/bin/frps
chmod +x /usr/local/bin/frps
mkdir -p /etc/frp

# 2. 配置 frps.toml(token 用强随机字符串,与 frpc 一致)
cat > /etc/frp/frps.toml <<'EOF'
bindPort = 7000
auth.method = "token"
auth.token = "YOUR_STRONG_TOKEN"
EOF

# 3. systemd 开机自启
cat > /etc/systemd/system/frps.service <<'EOF'
[Unit]
Description=FRP Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now frps
systemctl status frps          # 应显示 active (running)

⚠️ 两层放行缺一不可(本次实战最大坑):

  1. 云安全组(阿里云控制台 → 安全组 → 入方向):放行 TCP 7000、6022,来源 0.0.0.0/0
  2. 服务器本机防火墙(firewalld/ufw):
    sudo firewall-cmd --permanent --add-port=7000/tcp   # firewalld (Alibaba Cloud Linux/CentOS)
    sudo firewall-cmd --permanent --add-port=6022/tcp
    sudo firewall-cmd --reload
    # 或 Ubuntu/Debian:
    sudo ufw allow 7000/tcp && sudo ufw allow 6022/tcp
    

三、客户端 frpc 部署(Debian / 410,arm64)

3.1 下载安装

# 准备工具
apt-get update && apt-get install -y curl wget

# 下载(GitHub 直连在国内常超时,用 ghfast.top / gh-proxy.com 镜像)
cd /tmp
curl -sL -o frp.tar.gz "https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.71.0/frp_0.71.0_linux_arm64.tar.gz"
tar xzf frp.tar.gz

# 安装
cp frp_0.71.0_linux_arm64/frpc /usr/local/bin/frpc
chmod +x /usr/local/bin/frpc
frpc --version                  # 验证: 0.71.0
mkdir -p /etc/frp /var/log/frp

架构说明:410 是 arm64,服务器一般 amd64,两个包名不同别下错。
下载通道经验:github.com 直连 000 超时;ghfast.top、gh-proxy.com 镜像 200 可用;mirror.ghproxy.com、github.moeyy.xyz 当时不可用。

3.2 配置 frpc.toml(注意:用纯英文注释,避免终端乱码)

serverAddr = "XX.XX.XX.XX"        # 你的公网服务器 IP/域名
serverPort = 7000
auth.method = "token"
auth.token = "YOUR_STRONG_TOKEN"   # 必须与 frps 一致

log.to = "/var/log/frp/frpc.log"
log.level = "info"
log.maxDays = 7

# SSH 远程访问代理
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6022                  # 公网对外开放的端口

3.3 systemd 服务

cat > /etc/systemd/system/frpc.service <<'EOF'
[Unit]
Description=FRP Client Service
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=10
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now frpc
systemctl status frpc
tail -f /var/log/frp/frpc.log
# 成功标志: "login to server success" + "proxy added: [ssh]" + "start proxy success"

3.4 常用运维命令

systemctl status frpc          # 状态
systemctl restart frpc         # 重启(改配置后)
systemctl reload frpc          # 重载配置(发送 HUP)
journalctl -u frpc -f          # 看 systemd 日志
tail -f /var/log/frp/frpc.log  # 看 frp 日志
frpc verify -c /etc/frp/frpc.toml   # 校验配置语法

四、SSH 私钥认证配置(关键安全步骤)

4.1 生成密钥对(在电脑上)

ssh-keygen -t ed25519 -f D:\key\ufi_ed25519 -N "" -C "ufi003"
# 生成: ufi_ed25519 (私钥,自己保管) + ufi_ed25519.pub (公钥,放设备)

4.2 把公钥装进设备(user 和 root 都放)

# adb shell 或首次 SSH 后执行
mkdir -p ~/.ssh && chmod 700 ~/.ssh
# 把 ufi_ed25519.pub 的内容追加进去
echo "ssh-ed25519 AAAA... ufi003" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

4.3 关闭密码登录、root 仅密钥(公网暴露前必须做)

sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^PermitRootLogin yes/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
systemctl restart ssh
sshd -T | grep -iE 'passwordauthentication|permitrootlogin'   # 验证生效

4.4 登录方式

# 公网(经 frp)
ssh -p 6022 -i D:\key\ufi_ed25519 root@39.96.206.90
# 内网直连
ssh -i D:\key\ufi_ed25519 root@192.168.137.47

五、本次部署踩坑经验(排查问题方法论)

坑 1:公网连不上 → 端口两层放行缺一不可

现象:frpc 日志显示 login to server success、start proxy success,但公网 ssh -p 6022 超时。

排查方法(双视角 + 端口对比):

# 主机侧
Test-NetConnection 39.96.206.90 -Port 6022    # False(超时)
Test-NetConnection 39.96.206.90 -Port 7000    # True(通!)

# 410 设备侧(排除本机网络因素)
timeout 10 bash -c 'echo > /dev/tcp/39.96.206.90/6022' && echo OPEN || echo TIMEOUT

结论推导:7000 通 = frps 活着、token 正常、frpc 正常;6022 不通 = 只有转发端口被拦。
根因:云安全组放行了 7000 但忘了放 6022;放行后仍不通,是服务器本机 firewalld 也忘了放。两层墙都要开。

坑 2:GitHub 直接下载超时 → 用镜像

curl -sI https://github.com/... 全 000。可用镜像:ghfast.top、gh-proxy.com。
探测方法:对多个通道做 HEAD 请求,选返回 200 的。

坑 3:设备 apt HTTPS 全挂 → CA 证书 + 时间

  • 现象:Certificate verification failed ... issuer unknown
  • 原因 A:系统时间停在 2021(无 RTC,重启即丢)→ date -s / 配置 systemd-timesyncd 自动同步
  • 原因 B:ca-certificates 包缺失(OpenStick 精简镜像没带)→ 手动下载 deb 安装 openssl + ca-certificates
  • 附带:apt 源用 http 会被运营商劫持(报 2.2.2.2 广告),改 https + 装 CA 后解决

坑 4:nano 打开中文注释乱码

  • 原因:配置文件里的中文(UTF-8)在非 UTF-8 的 adb shell 终端里按字节显示成 ^h ^e ^m
  • 解决:配置文件注释一律用英文(ASCII);或先 export LANG=C.UTF-8 再编辑

坑 5:root 登录"密码设了没用"

  • 原因一:Debian 默认 PermitRootLogin without-password(root 禁止密码登录)
  • 原因二:root 密码被清成空(passwd -S root = NP)
  • 解决:设密码 + PermitRootLogin yes(内网短线可用);公网场景直接走密钥认证,不必开

六、安全加固清单

项目 状态 说明
frps token ✅ 强随机字符串,frps/frpc 一致
SSH 私钥认证 ✅ ed25519,user + root 都配好
SSH 密码登录 ✅ 已禁用 PasswordAuthentication no
root 登录 ✅ 仅密钥 PermitRootLogin prohibit-password
frpc 日志 ✅ /var/log/frp/frpc.log 保留 7 天
私钥保管 ⚠️ 电脑上备份一份到加密介质,勿外传
服务器安全组 ⚠️ 建议授权对象收窄到自己的固定 IP(如有)
fail2ban 可选 服务器上装,防爆破(密码已关,非必须)
服务器本身 ⚠️ 服务器 SSH 用强密码/密钥,别开弱口令

七、扩展玩法(基于同样的 frpc 框架)

功能 原理 配置要点
串口日志采集 410 跑 ser2net 把 /dev/ttyMSM 映射 tcp 加一个 tcp 代理 remotePort=64000
远程调试(OpenOCD) 410 跑 OpenOCD 提供 gdb 端口 加代理 3333→6333,远程 gdb 连接
frpc 管理面板 webServer 配置 内网 http://192.168.137.47:7500
多转发端口 加多个 [[proxies]] 块 每个远程端口单独配置

文档完。部署验证时间:2026-09-03,frp v0.71.0,

posted @ 2026-09-03 13:50  口嗨养生博  阅读(23)  评论(0)    收藏  举报