问题描述
Web 终端访问的不是服务器本身,看不到 OpenClaw 相关的进程执行。
问题原因
原配置:
1
| docker run -d --name ttyd tsl0922/ttyd:latest
|
问题分析:
- ttyd 运行在 Docker 容器内
- 只能看到容器内的进程
- 无法访问宿主机的进程和文件
- 无法执行服务器管理操作
解决方案
方案:直接在宿主机运行 ttyd
优势:
- ✅ 直接访问宿主机所有进程
- ✅ 完整的服务器管理权限
- ✅ 可以查看和操作 OpenClaw
- ✅ 可以管理所有 Docker 容器
修复步骤
1. 安装 ttyd
1 2 3 4 5 6 7
| wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64 -O /usr/local/bin/ttyd chmod +x /usr/local/bin/ttyd
ttyd --version
|
2. 创建 Systemd 服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| cat > /etc/systemd/system/ttyd.service << EOF [Unit] Description=ttyd - Web Terminal After=network.target
[Service] Type=simple ExecStart=/usr/local/bin/ttyd -p 7681 -W /bin/bash Restart=always RestartSec=3 User=root Environment=HOME=/root
[Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable ttyd systemctl start ttyd
|
3. 验证运行
1 2 3 4 5 6
| systemctl status ttyd
ps aux | grep ttyd
|
权限问题修复
问题:execvp failed: Permission denied
原因: 缺少 -W 参数,默认只读模式
解决:
1 2 3 4 5
| ExecStart=/usr/local/bin/ttyd -p 7681 /bin/bash
ExecStart=/usr/local/bin/ttyd -p 7681 -W /bin/bash
|
参数说明:
-W - 启用写入模式(Writable)
/bin/bash - 使用 Bash Shell
使用验证
测试访问
访问:https://你的域名/terminal/
输入认证信息:
验证功能
1 2 3 4 5 6 7 8 9 10 11
| ps aux | grep openclaw
docker ps
tail -f /var/log/syslog
nano ~/.openclaw/openclaw.json
|
配置对比
| 项目 |
Docker 方案 |
宿主机方案 |
| 进程可见性 |
仅容器内 |
✅ 全部 |
| 文件访问 |
需挂载 |
✅ 全部 |
| 权限管理 |
受限 |
✅ 完整 |
| 资源占用 |
稍高 |
✅ 更低 |
| 维护复杂度 |
简单 |
简单 |
安全建议
⚠️ 重要提示
现在 ttyd 运行在宿主机上,拥有完整的 root 权限!
安全措施
- ✅ 基本认证 - 已配置 Nginx 认证
- ✅ HTTPS 加密 - 已启用
- ⚠️ 定期审计 - 检查访问日志
- ⚠️ 强密码 - 使用强密码
额外建议
1 2 3 4 5 6
| location /terminal/ { allow 你的IP; deny all; }
|
常用命令
服务管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| systemctl start ttyd
systemctl stop ttyd
systemctl restart ttyd
systemctl status ttyd
journalctl -u ttyd -f
|
配置修改
1 2 3 4 5 6
| nano /etc/systemd/system/ttyd.service
systemctl daemon-reload systemctl restart ttyd
|
故障排查
问题:无法访问
检查:
1 2 3 4 5 6 7 8 9 10 11 12
| systemctl status ttyd
netstat -tlnp | grep 7681
nginx -t systemctl status nginx
journalctl -u ttyd -n 50
|
问题:认证失败
检查:
1 2 3 4 5 6
| cat /etc/nginx/.htpasswd
htpasswd -bc /etc/nginx/.htpasswd 你的用户名 你的密码 systemctl reload nginx
|
相关资源
修复完成时间: 2026-03-02
当前状态: ✅ 运行正常,可访问所有服务器进程
问题已解决