家里 Mac 性能爆表,公司电脑想随时连,怎么办?
一、为啥需要 frp?
- 家里 Mac 没有公网 IP,外网无法直接访问。
- Cloudflare Tunnel 只能转发 HTTP/HTTPS,不能转发 SSH、Flink RPC、Spark Master 等 TCP 端口。
- 我有一台腾讯云 2核4G 小服务器,虽然装不了大数据组件,但做内网穿透绰绰有余。
frp 是一个高性能的反向代理,她让公网 IP 的云服务器变成"接线员",所有从外网来的请求,都通过它转发到你的 Mac 上。
二、整体架构

- 腾讯云上运行 frp 服务端(frps),监听特定端口(如 7000)。
- 家里 Mac 运行 frp 客户端(frpc),主动连接到云服务器的 7000 端口,建立持久隧道。
- 公司电脑上,通过访问云服务器的某个端口(如
云服务器IP:2222),流量就会被转发到 Mac 的 22 端口,实现远程 SSH。
三、腾讯云服务端配置(腾讯云 2核4G)
1. 下载并安装 frp
登录腾讯云服务器,安装frp:
Bash
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.69.1/frp_0.69.1_linux_amd64.tar.gz
tar -xzf frp_0.69.1_linux_amd64.tar.gz
mv frp_0.69.1_linux_amd64 frp
cd frp

2. 编辑 frps.toml
创建配置文件 frps.toml(使用新版本的 TOML 格式):
TOML
bindPort = 7000
auth.token = "在这里生成一个32位强密码"
bindPort:服务端监听端口,客户端会连接这个端口。auth.token:认证令牌,必须一致才能连接,防止被扫。

3. 启动服务端
测试运行:
Bash
./frps -c frps.toml
看到 frps started successfully 就说明启动成功

配置为系统服务(可选,推荐使用 systemd):
Bash
sudo tee /etc/systemd/system/frps.service << 'EOF'
[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps
查看状态:
Bash
sudo systemctl status frps

4. 开放安全组端口
在腾讯云控制台安全组中,添加入站规则:
端口 7000 :来源为 0.0.0.0/0(允许所有 IP 连接 frp 服务端),建议加白名单(只放你公司出口 IP 或你自己家的 IP)。
四、客户端配置(你家里的 Mac)
1. 下载 frp(arm64 版本)
Bash
cd ~/Downloads
curl -LO https://github.com/fatedier/frp/releases/download/v0.69.1/frp_0.69.1_darwin_arm64.tar.gz
tar -xzf frp_0.69.1_darwin_arm64.tar.gz
mv frp_0.69.1_darwin_arm64 ~/frp
cd ~/frp
2. 编辑 frpc.toml
TOML
serverAddr = "你的腾讯云公网IP"
serverPort = 7000
auth.token = "和frps.toml里完全一样的密码"
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2222

3. 启动客户端
测试:
Bash
./frpc -c frpc.toml
看到 start proxy success 等日志就表示隧道建立。

测试后可以配置开机自启(在 Mac 上使用 launchd)。
创建一个 plist 文件 ~/Library/LaunchAgents/com.frpc.plist:
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.frpc</string>
<key>ProgramArguments</key>
<array>
<string>/Users/你的用户名/frp/frpc</string>
<string>-c</string>
<string>/Users/你的用户名/frp/frpc.toml</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
加载服务:
Bash
launchctl load ~/Library/LaunchAgents/com.frpc.plist
五、从公司电脑远程操作 Mac
在公司电脑上执行:
Bash
ssh -p 2222 your_mac_username@腾讯云IP
输入你的 Mac 登录密码,就像坐在 Mac 面前一样。你可以运行命令、编辑文件、启动/停止 Docker 容器。

六、安全加固(千万别跳过)
由于你的 Mac 现在暴露到了公网,必须做好防护:
-
安全组白名单:
-
在腾讯云安全组中,将
2222、8888、8081等 frp 映射端口,来源 IP 限制为你公司的公网 IP(或你常用的几个 IP),不要设为 0.0.0.0/0。 -
Mac 端防火墙:
-
系统偏好设置 → 安全性与隐私 → 防火墙,确保开启,并阻止未授权的传入连接(通常默认开启)。
-
frp 强密码:
-
auth.token一定要用复杂随机字符串,不要用默认值。 -
SSH 禁密码登录(可选):
-
如果你想让 SSH 更安全,可以在 Mac 上禁用密码登录,只用密钥,避免暴力破解。
-
定期更新 frp:
-
frp 偶尔有安全更新,保持版本较新。
七、常见问题
Q:连接 SSH 时提示 Connection refused
A:检查 Mac 上的 frpc 是否在运行(ps aux | grep frpc),确认云服务器安全组端口已放行,确认本地 SSH 服务已开启(系统偏好设置 → 共享 → 远程登录)。
Q:frpc 连接上了,但端口映射无效
A:检查 remotePort 是否已被占用(在云服务器上 netstat -tlnp | grep 端口),尝试修改一个未使用的端口。
Q:Mac 休眠后隧道断开
A:在节能设置里勾选"防止自动休眠 ",或使用 caffeinate 命令保持 Mac 唤醒。也可在 frpc 客户端配置中添加 autoReconnect=true(但新版本默认自动重连)。
Q:公司网络封锁了非标准端口(如 2222)
A:可以尝试使用 remotePort = 443 或 80(需要这些端口未被云服务器占用),因为 443 端口通常不会被防火墙封锁。
Q:frpc 连接服务i/o timeout
A:腾讯云安全组放开不行,要关闭防火墙,或者添加端口
YAML
sudo ufw allow 7000/tcp
sudo ufw reload

Q:ssh 连接 mac 报connection refused
A:开启 Mac 远程登录
- 打开 系统设置 → 通用 → 共享
- 找到 远程登录 这一项,把它打开。
