CLI 命令行

p2pee-remote 是远程桌面的单文件网关,纯 Go 实现、无运行时依赖,跑在能访问到被控机器的那台机器上(通常就是被控机自己):

# Windows(反引号是续行符)
.\p2pee-remote.exe -key '<你的Key>' `
    -connect "办公室机=rdp:192.168.10.7?user=ops"
# Linux / macOS(文件名以实际下载的版本为准)
wget https://gitee.com/xnkyn/assets/releases/download/p2pee-remote/p2pee-remote-1.0.0-linux-amd64
chmod +x ./p2pee-remote-1.0.0-linux-amd64
./p2pee-remote-1.0.0-linux-amd64 -key '<你的Key>' -connect '办公室机=rdp:192.168.10.7?user=ops'

安装包按平台从 远程桌面更新日志 对应版本条目下载(与官网下载区同源)。目标串完整语法与被控机要求见 目标串与被控机要求。

下载后可校验

发行版里附带 SHA256SUMS 与 manifest.txt:前者逐行列出每个包的文件名与哈希,后者记录本次构建的版本与 Go 工具链。拿到包之后对照一下哈希,确认没被中间环节改动过。

命令行参数

参数默认值说明
-key—必填,账户 Key,用来换取信令凭证与 ICE 服务器
-connect空目标机器,一条就是一台,可重复给,也可在一条里用逗号分隔;开头的 名称= 可以省,写成 -connect rdp:192.168.10.7 就能起
-mark随机固定信令 markID(仅会员生效),地址因此保持稳定、方便收藏
-force-relay关ICE 只走中继,排查弱网 / 对称 NAT 时用
-version—打印版本号
漏写 -connect 会直接报错退出

少写一次 -connect,后面那条目标串会被当成裸参数并直接报错退出,不会静默当成空清单 —— 进程一启动就没了,先检查参数拼写。-debug(本机内嵌页面,仅联调)与 -rdp-no-display(排查显示通道)是排障参数,用法见 常见问题排查。

启动后拿到什么

日志横幅里那一行 公网访问页: https://p2pee.cn/r/<凭证>/ 就是要发给访问端的地址。生产模式下日志已收敛:启动信息、每台机器的会话开始 / 结束与全部 Warn / Error。版本低于服务端最低要求时直接拒绝启动并提示换新,不会带着旧协议硬连。

开机常驻

网关进程退出 = 地址立即失效,所以要让它在被控机或 NAS 上长期跑:

  • Windows:任务计划程序,触发器选启动时(不等人登录),操作填 exe 绝对路径与完整参数,属性里勾「不管用户是否登录都要运行」。
  • NAS / 容器:不想配服务就用 Docker 部署 或 飞牛 NAS 应用。
# Linux:systemd 参考写法
sudo tee /etc/systemd/system/p2pee-remote.service >/dev/null <<'EOF'
[Unit]
Description=p2pee remote desktop gateway
After=network-online.target

[Service]
ExecStart=/opt/p2pee/p2pee-remote -key '<你的Key>' -connect '办公室机=rdp:192.168.10.7?user=ops'
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now p2pee-remote
journalctl -u p2pee-remote -f    # 看横幅里的公网访问页地址
Key 落在服务文件里就要收好权限

-key 出现在命令行就等于留在磁盘上。服务文件权限收到 600、只允许 root 读;多人登录的机器上改用你自己的账户跑。

相关