| name | wechat-publisher-relay |
| description | 阿里云中继服务器(47.85.62.133)管理 — SSH 登录、wx-publisher 服务运维、API 端点、代码修改与部署。当用户提到"阿里云服务器""中继""47.85""wx-publisher""push_telegram"或需要操作该服务器时使用。 |
| category | devops |
阿里云微信发布中继服务器
服务器信息
| 项 | 值 |
|---|
| IP | 47.85.62.133 |
| 主机名 | iZ0xico4s35nx01ecj3anmZ |
| 云厂商 | 阿里云轻量应用服务器 |
| OS | Linux (Alibaba Cloud Linux / CentOS) |
| SSH | root / Wb88517aliyundl- |
| Node.js | ESM 模块,通过 PM2 管理 |
服务概览
/root/wx-publisher/
├── server.js ← 主服务(Node.js http 模块,ESM import)
├── deepseek.js ← DeepSeek AI 排版(formatArticle)
├── wechat.js ← 微信公众号草稿创建(createDraft)
├── .env ← BEARER_TOKEN + WECHAT_APP_ID/SECRET + DEEPSEEK_API_KEY
├── package.json
├── node_modules/
└── cover.jpg ← 公众号封面图
进程管理:PM2,进程名 wx-publisher,端口 8787。
SSH 登录
sshpass -p 'Wb88517aliyundl-' ssh -o StrictHostKeyChecking=no root@47.85.62.133
⚠️ Hermes 运行在 macOS 上,无法使用 read_file 等本地工具读取远程文件。所有远程操作必须通过 terminal 执行 SSH 命令。
常用 SSH 操作模式
sshpass -p 'Wb88517aliyundl-' ssh root@47.85.62.133 'cat /root/wx-publisher/server.js'
sshpass -p 'Wb88517aliyundl-' scp /local/file.js root@47.85.62.133:/root/wx-publisher/
sshpass -p 'Wb88517aliyundl-' ssh root@47.85.62.133 'pm2 restart all && sleep 1 && curl -s localhost:8787/health'
API 端点
所有端点基础 URL:http://47.85.62.133:8787
| 方法 | 路径 | 认证 | 功能 |
|---|
| GET | /health | 无 | 健康检查 → ok |
| POST | /publish | Bearer TOKEN | 接收原始文本 → DeepSeek排版 → 创建公众号草稿 |
| POST | /push_telegram | Bearer TOKEN | 接收 JSON → MarkdownV2格式 → 推送到 @AgentToWest |
| 其他 | 任意 | — | 返回 {"error":"not found"} |
认证 Token 存储在 .env 的 BEARER_TOKEN 字段中。
/push_telegram 详情
{
"title": "文章标题",
"excerpt": "摘要(前200字会被使用)",
"wp_link": "http://hellobog.com/xxx",
"wx_url": "微信原文链接(可选)",
"mp_name": "公众号名称(默认:中本笨-BG)"
}
{"ok": true, "message_id": 2}
Authorization: Bearer d1f551894905ad52b2a1885216ff31ad11b07c146708d664
Telegram Bot Token 和频道写在代码中:
- Bot:
8609798183:AAGcIIm_cSnLQRFtlYCaH9A5gaE6P86scGA
- 频道:
@AgentToWest
新增端点流程
当需要在 server.js 中新增路由时:
- 本地写好完整文件(用
write_file)
- SCP 上传到服务器
- PM2 重启并验证
sshpass -p 'Wb88517aliyundl-' scp /tmp/server.js root@47.85.62.133:/root/wx-publisher/server.js
sshpass -p 'Wb88517aliyundl-' ssh root@47.85.62.133 'pm2 restart all'
curl -s http://47.85.62.133:8787/health
代码注意事项
- 使用
import / export(ESM 模块),不是 require()
- MarkdownV2 模式需要转义特殊字符:
_ * [ ] ( ) ~ ` > # + - = | { } . !
- Telegram API 调用使用 Node.js 内置
https 模块(无需额外依赖)
.env 文件包含敏感凭证,输出时会自动 redact
PM2 常用命令
pm2 restart all
pm2 logs wx-publisher
pm2 status
pm2 stop all
pm2 delete all
基础设施全景
📄 完整 server.js 代码模板见 templates/server.js — 可直接作为新增端点的基础代码。
该服务器是波总"Agentic-Capital-Workflow"全链路中的关键节点:
文章内容 → GitHub (bog5d/Agentic-Capital-Workflow)
↓ 发布
WordPress (hellobog.com, 腾讯云 111.229.29.110)
↓ API 调用
┌─────────┼─────────┐
↓ ↓
/publish /push_telegram
(DeepSeek排版 (MarkdownV2推送
→ 公众号草稿) → @AgentToWest)
关联服务器和服务:
- 腾讯云 111.229.29.110 — WordPress + 宝塔面板
- n8n — Docker 自动化平台(端口 5678)
- FRP 隧道 — 47.85.62.133:7000(token: Cangjie2026)
故障排查
| 现象 | 可能原因 | 检查方法 |
|---|
/health 不通 | PM2 挂了或端口被占 | ssh root@47.85.62.133 'pm2 status' |
/publish 401 | BEARER_TOKEN 不匹配 | 检查 .env 和请求 Header |
/push_telegram Markdown 解析错误 | 未转义特殊字符 | 使用 escapeMd() 函数(已在 server.js 中) |
| TG 消息发不出去 | Bot token 或频道错误 | 检查代码中硬编码的 TG_BOT_TOKEN 和 TG_CHANNEL |
| PM2 不识别 | PM2 未安装或 dump 丢失 | pm2 list,必要时 pm2 start server.js --name wx-publisher |
🛡️ 安全加固
已知攻击面(当前状态:脆弱)
| 风险点 | 现状 | 风险等级 |
|---|
| SSH 密码登录 | PermitRootLogin yes + PasswordAuthentication yes | 🔴 致命 |
| Root 密码强度 | 弱密码,可能已泄露 | 🔴 致命 |
| FRP Token | Cangjie2026 明文,7000端口公网暴露 | 🔴 高 |
| 公网端口 | 22, 7000, 6000 全开 | 🟡 中 |
| 暴力破解 | 持续遭受多IP扫描 | 🔴 高 |
加固清单(优先从高到低)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_alicloud -N "" -C "hermes@alicloud"
sshpass -p '<current-pass>' ssh root@47.85.62.133 \
"mkdir -p ~/.ssh && echo '<PUBKEY>' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
sshpass -p '<current-pass>' ssh root@47.85.62.133 "echo 'root:<NEW_PASS>' | chpasswd"
ssh root@47.85.62.133 \
"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 sshd"
ssh root@47.85.62.133 \
"sed -i \"s/auth.token = .*/auth.token = '$(openssl rand -hex 16)'/\" /root/frp_*/frps.toml && \
systemctl restart frps"
ssh root@47.85.62.133 \
"firewall-cmd --permanent --remove-service=ssh && \
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=YOUR_IP/32 port port=22 protocol=tcp accept' && \
firewall-cmd --reload"
应急响应速查
当收到阿里云安全告警时,按以下顺序排查:
ps aux --sort=-%cpu | head -20
ss -tlnp
ss -tnp | grep ESTAB
last -n 10
lastb | head -10
crontab -l
ls -la /etc/cron.d/
find /etc/systemd -name "*.service" -mtime -30
find /usr/local/bin -type f -mtime -30
find /tmp /var/tmp /dev/shm -type f
cat /proc/<PID>/cmdline | tr '\0' ' '
ls -la /proc/<PID>/cwd
kill -9 <PID>
systemctl stop <service> && systemctl disable <service>
rm -f <malicious-file>
systemctl daemon-reload
常见恶意软件伪装模式(本服务器曾发现)
📄 具体 IOC 见 references/malware-ioc-20260604.md
- systemd.service — 伪装的挖矿守护(
Restart=always),二进制在 /usr/local/bin/systemd
- observed.service — 伪装的"系统观测服务",实际是竞品清理守护
- free_proc.sh — 杀 CPU >200% 的非 self 进程,防止其他挖矿竞争资源
- CPU 160%+ 进程名
systemd 连接 xmr.kryptex.network:8029 → XMR 挖矿
常驻合法服务(勿杀)
| 服务 | PID 模式 | 用途 |
|---|
moltbot-gateway | /opt/moltbot/dist/index.js (admin 用户) | 波总 AI Gateway |
wx-publisher | node /root/wx-publisher/server.js (PM2) | 微信发布中继 |
AliYunDun | /usr/local/aegis/ | 阿里云盾 |
frps | /root/frp_*/frps | FRP 隧道服务 |
node / docker-proxy | Docker 容器端口映射 | n8n 等容器 |