核心功能
- 多代理管理:支持同时连接和管理多个远程主机
- Web终端:基于WebSocket的实时终端交互
- 文件管理:完整文件浏览、上传、下载功能
- 多标签界面:支持为每个代理创建多个终端和文件管理器标签
- 实时通信:基于WebSocket的低延迟通信
安全特性
- Token认证:基于Token的身份验证机制
- TLS 支持:可选的 HTTPS/WSS 加密传输
- 进程伪装:Agent可伪装为系统进程(如[kworker/0:0])
- 随机登录路径: 动态生成的登录URL路径
配置特性
- 一键安装:提供自动化安装脚本
- 跨平台支持:支持Linux、macOS、FreeBSD多种架构
- 持久化运行:支持systemd服务和LaunchAgent
- 自动重启:内置心率检测和自动重连机制
项目结构
limit-ssh/├── cmd/ # 主程序入口
│ ├── server/ # 服务端程序
│ └── agent/ # Agent 程序
├── internal/ # 内部包
│ ├── common/ # 公共消息结构
│ ├── server/ # 服务端核心逻辑
│ └── agent/ # Agent 核心逻辑
├── web/ # Web 前端资源
│ ├── static/ # 静态文件(JS/CSS)
│ └── templates/ # HTML 模板
├── bin/ # 编译输出目录
└── Makefile # 构建脚本
快速开始
环境要求
- 前往 1.21+
- 现代浏览器(支持WebSocket)
编译项目
# 克隆项目git clone <repository-url>
cd limit-ssh
# 编译服务端和 Agent
make build
# 或编译所有平台的 Agent
make build-all-agents
启动服务端
# 基本启动./bin/server -token your_secret_token
# 自定义端口和登录路径
./bin/server -port 8080 -token your_secret_token -login-path /admin
# 启用 HTTPS
./bin/server -port 8443 -cert server.crt -key server.key -token your_secret_token
部署代理
方法一:一键安装(推荐)
curl -sSf http://SERVER_IP方法二:手动配置
# 下载对应平台的 Agentwget http://SERVER_IP
chmod +x agent-linux-amd64
# 运行 Agent
./agent-linux-amd64
方法三:自定义Agent ID
# 使用自定义 ID./agent-linux-amd64 -server SERVER_IP
使用说明
访问Web界面
- 启动服务端后,访问http://SERVER_IP
ORT/随机登录路径
- 输入启动时设置的token进行登录
- 在面板面板查看已连接的Agent
基本操作
- 选择代理:点击左侧代理列表中的主机
- 执行命令:在终端区域输入命令并按回车
- 文件管理:右键单击代理选择“打开文件管理器”
- 多标签: 右键单击代理可创建多个条目或文件管理器标签
- 切换标签: 点击左侧标签栏切换不同的会话
文件操作
- 浏览文件:在文件管理器中上部目录进入
- 下载文件:选择文件后点击下载按钮
- 上传文件:点击上传按钮选择本地文件
- 删除文件:选择文件后点击删除按钮
配置选项
服务端参数
./server [选项]-port string 服务端口 (默认: "8080")
-cert string TLS 证书文件路径
-key string TLS 私钥文件路径
-token string 认证令牌 (必需)
-login-prefix string 登录路径前缀 (默认: "auth")
-login-path string 自定义登录路径
代理参数
./agent [选项]-server string 服务器地址 (默认: "localhost:8080")
-id string Agent ID (可选,默认自动生成)
-secure 启用 TLS 连接
-disguise string 进程伪装名称 (默认: "[kworker/0:0]")
高级功能
编译时配置
可以在编译时设置默认服务器地址:make build-all-agents DEFAULT_SERVER=your-server.com:8080 DEFAULT_SECURE=true
自动化部署
项目提供了完整的安装和卸载脚本:- install.sh:自动检测系统架构并安装Agent
- uninstall.sh: 彻底清理所有相关文件和进程
持久化运行
药剂支持多种持久化方式:- Linux:systemd 用户服务
- macOS:启动代理
- 通用: cron 任务
安全注意事项
- 强密码:使用足够复杂的代币
- 网络隔离:建议使用网络环境
- HTTPS:生产环境建议启用 TLS
- 防火墙:适当配置防火墙规则
- 日志监控:定期检查访问日志
故障排除
常见问题
代理无法连接- 检查服务器地址和端口是否正确
- 确认防火墙设置
- 验证网络性
- 确认服务端正常启动
- 检查登录路径是否正确
- 验证令牌是否匹配
- 检查文件大小限制(默认10MB)
- 确认目标目录权限
- 验证磁盘空间
卸载清理
# 使用自动卸载脚本curl -sSf http://SERVER_IP
# 或手动清理
sudo systemctl --user stop system-helper.service
sudo systemctl --user disable system-helper.service
rm -rf ~/.config/systemd/systemd-helper