使用 frp 实现任意地点远程控制 Android 手机

上次在 android 手机端的 termux 配置 git,手机在触屏上操作 cli 慢的要死,搞得我很晚回家在局域网才能弄,受不了这个效率。 今天搭了个 frp,彻底解决在任意地点,只要有网,都能 ssh 连自己手机的方案。过程以 obsidian 记录,分享给大家。

frp 实现原理

项目地址: frp(fast reverse proxy),A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

实现原理

sequenceDiagram
    PC端->>frps[公网服务器-NAS]: ssh/http请求
    frps[公网服务器-NAS]->>frpc[手机-termux]: 通过控制通道转发请求
    frpc[手机-termux]-->>frps[公网服务器-NAS]: 通过数据通道返回手机本地服务数据
    frpc[手机-termux]-->>PC端: 返回最终结果

实际就是内网穿透的原理,反向连接公网服务器,转发数据实现外网访问。

举个生活例子 你让在国外的朋友帮你买个东西,你先打电话给中间商(公网服务器),中间商通知当地的朋友(手机客户端),朋友买到东西后通过物流(数据通道)寄回中间商,最后转交给你。

项目语言是 go 实现的,部署起来特别方便,我这儿 frps 使用 docker 部署,frpc 在客户端目前没有 docker 环境,下个二进制文件起来就行。

frps 服务端部署

准备配置文件,注意老的是 ini,新版本都是 toml 格式了

mkdir -p /mnt/mind/data/frps
vim /mnt/mind/data/frps/frps.toml

frps.toml

[common]
bind_port = 17000
# frps的看板页
dashboard_port = 17500
dashboard_user = admin
dashboard_pwd = 12345678
 
# http proxy
vhost_http_port = 17080
vhost_https_port = 17081
 
# frpc客户端认证密码
token = 12345678

使用 docker 部署

version: '3'
 
services:
  frps:
    image: snowdreamtech/frps
    container_name: frps
    restart: always
    network_mode: host
    volumes:
      - "/mnt/mind/data/frps/frps.toml:/etc/frp/frps.toml"

dashboard 

  • 地址:http://your.domain.org:17500
  • 账号:admin/12345678

frpc 客户端配置

准备 frpc.toml

[common]
# server_addr-->server的ip
server_addr = "your.domain.org"
# server_port-->server的bind_port
server_port = "17000"
# 身份验证
token = "12345678"
 
# [android] 为服务名称,下方此处设置为,访问frp服务段的18022端口时,等同于通过中转服务器访问127.0.0.1的8022端口。
[android]
type = tcp
local_ip = 127.0.0.1
local_port = 8022
remote_port = 18022
# 解压
mkdir ~/tool/
tar -xvf frp_0.61.1_android_arm64.tar.gz
# 准备配置文件
mv frp_0.61.1_android_arm64 frpc
~ $ tree ~/tool
 
2 directories, 6 files
 
# 手动配置
vim  frpc/frpc.toml
 
# 启动服务
cd /data/data/com.termux/files/home/tool/frpc
nohup ./frpc -c frpc.toml > frpc.log &
tail -200f frpc.log

android 的 frpc 启动成功后,在 frps 服务端看到网络统计数据 OK,万事具备,frpc 和 frps 的通道已经建立。 现在,通过 ssh 连接 frps 服务器的 18022 端口,就能直接控制手机的 8022 端口了

ssh -p 18022 u0_a279@your.domain.org

📌 总结 本文介绍了 如何使用 frp 开源项目在任意地点远程控制 android 手机。

搞好了,全身愉快。明天开始 ssh 直接控制手机,传送文件,我就再也不用走微信文件/kodbox 之类的绕了。

至于 termux 跑大模型,搞 jupyterlab 玩开发之类的,暂时没有需求,如今通道有了,后面有想法再折腾。