一个轻量级的 SSH 脚本执行工具,使用 Go + Web 技术栈,支持一键连接服务器并执行预设脚本。
- 🖥️ 服务器管理 - 添加、编辑、删除 SSH 服务器配置
- 📁 项目管理 - 创建项目并关联服务器和执行脚本
- ⚡ 一键执行 - 双击即可快速连接服务器并执行脚本
- 📊 实时输出 - WebSocket 实时传输,支持交互式终端
- 🔗 多窗口支持 - 每个项目在新标签页打开,互不干扰
- 💾 数据持久化 - 自动保存服务器和项目配置
- 🎨 现代化界面 - 美观的 UI 设计,易于使用
- Go 1.21+ - 高性能后端服务
- Gorilla WebSocket - WebSocket 实时通信
- golang.org/x/crypto/ssh - SSH 连接处理
- xterm.js - 浏览器终端模拟器
- 纯 HTML/CSS/JS - 无需复杂前端框架
# 克隆项目
git clone <repository-url>
cd okssh
# 下载依赖
go mod download
# 运行
go run .# Linux/macOS
GOOS=linux GOARCH=amd64 go build -o okssh main.go
# Windows
go build -o okssh.exe main.go
# 运行编译后的程序
./okssh
# 或 Windows
okssh.exego run .服务启动后显示:
🚀 OKSSH 已启动
📍 访问地址: http://127.0.0.1:10013
按 Ctrl+C 停止服务器
在浏览器中打开:http://127.0.0.1:10013
- 点击左侧菜单的"服务器管理"
- 点击"添加服务器"按钮
- 填写服务器信息:
- 服务器名称 - 例如:
生产服务器-01 - 主机地址 - 例如:
192.168.1.100 - 端口 - 默认
22 - 用户名 - 例如:
root - 认证方式 - 密码或 SSH 密钥
- 密码/私钥 - 对应的认证信息
- 服务器名称 - 例如:
- 点击左侧菜单的"项目管理"
- 点击"新建项目"按钮
- 填写项目信息:
- 项目名称 - 例如:
Nginx 访问日志 - 选择服务器 - 从已添加的服务器中选择
- 执行脚本 - 例如:
tail -f /var/log/nginx/access.log - 项目描述 - 可选的备注信息
- 项目名称 - 例如:
- 在项目列表中双击项目卡片
- 或点击"打开"按钮
- 自动打开新标签页并连接到服务器
- 连接成功后自动执行预设的脚本
- 可以直接在终端中输入命令进行交互
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.logtail -f /var/log/apache2/access.log
tail -f /var/log/httpd/access_logtail -f /var/log/syslog
tail -f /var/log/messages
journalctl -fdocker logs -f <container_name>
docker logs -f --tail 100 <container_name>tail -f /var/log/mysql/error.log
tail -f /var/log/mysql/general.logtail -f /var/log/postgresql/postgresql.logtail -f /path/to/your/application.log
tail -f /var/log/app/error.log如果使用 SSH 密钥认证:
- 在服务器管理中选择"SSH 密钥认证"
- 粘贴私钥内容(包含
-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----)
在项目终端中:
- 可以输入任何命令
- 支持上下箭头查看历史命令
- 支持 Tab 键自动补全
- 支持 Ctrl+C 中断当前命令
- 支持滚动查看历史输出
- 可以创建多个项目关联同一个服务器
- 每个项目可以配置不同的脚本
- 双击即可快速连接服务器并执行脚本
所有数据存储在 data.json 文件中:
{
"servers": [...],
"projects": [...]
}OKSSH 支持灵活的端口配置方式,优先级从高到低为:
1. 命令行参数(最高优先级)
# 使用 -p 参数
go run main.go -p 8080
# 使用 --port 参数
go run main.go --port 90002. 配置文件
# 创建或编辑 config.json
echo '{"port": 3000}' > config.json
# 启动服务
go run main.go3. 默认端口
- 默认端口是
10013,无需任何配置
配置优先级:命令行 -p > 命令行 --port > 配置文件 > 默认值(10013)
OKSSH 支持启动后自动打开浏览器访问主页:
1. 命令行参数
# 启用自动打开浏览器
go run main.go -o
go run main.go --open-browser2. 配置文件
# 创建或编辑 config.json
echo '{"openBrowser": false}' > config.json3. 默认行为
- 默认值为
true,即自动打开浏览器 - 如果配置文件中没有定义
openBrowser字段,默认开启
配置优先级:命令行参数 > 配置文件 > 默认值(true)
支持的操作系统:
- Windows:使用
cmd /c start - macOS:使用
open命令 - Linux:依次尝试
xdg-open、google-chrome、firefox、chromium
-
数据文件保护 -
data.json包含服务器密码,建议设置文件权限:chmod 600 data.json
-
网络访问控制 - 默认只监听 127.0.0.1,如果需要远程访问:
// 监听所有网络接口(谨慎使用) log.Fatal(http.ListenAndServe(":10013", nil)) // 或使用反向代理 + HTTPS
-
防火墙设置 - 确保只开放必要端口
-
检查服务器 SSH 服务是否运行:
systemctl status sshd
-
检查防火墙设置:
sudo firewall-cmd --list-ports
-
测试 SSH 连接:
ssh username@server-ip
- 确认用户名和密码正确
- 如果使用密钥,确认私钥格式正确
- 检查服务器 SSH 配置允许密码认证
某些日志文件需要 sudo 权限:
# 方案1:使用有权限的用户
# 方案2:配置 sudo 无密码(需谨慎)
# 方案3:将用户加入相应的组
sudo usermod -aG adm usernameokssh/
├── main.go # Go 后端主程序
├── go.mod # Go 模块定义
├── go.sum # 依赖版本锁定
├── data.json # 数据存储(自动生成)
└── frontend/
├── index.html # 主界面
└── terminal.html # 项目终端界面
欢迎提交 Issue 和 Pull Request!
MIT License
- xterm.js - 浏览器终端模拟器
- Gorilla WebSocket - WebSocket 实现
- golang.org/x/crypto - SSH 加密支持