Skip to content

yafoo/okssh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 OKSSH - 一键SSH脚本执行器

一个轻量级的 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.exe

🚀 使用方法

1. 启动服务

go run .

服务启动后显示:

🚀 OKSSH 已启动
📍 访问地址: http://127.0.0.1:10013
按 Ctrl+C 停止服务器

2. 访问应用

在浏览器中打开:http://127.0.0.1:10013

3. 添加服务器

  1. 点击左侧菜单的"服务器管理"
  2. 点击"添加服务器"按钮
  3. 填写服务器信息:
    • 服务器名称 - 例如:生产服务器-01
    • 主机地址 - 例如:192.168.1.100
    • 端口 - 默认 22
    • 用户名 - 例如:root
    • 认证方式 - 密码或 SSH 密钥
    • 密码/私钥 - 对应的认证信息

4. 创建项目

  1. 点击左侧菜单的"项目管理"
  2. 点击"新建项目"按钮
  3. 填写项目信息:
    • 项目名称 - 例如:Nginx 访问日志
    • 选择服务器 - 从已添加的服务器中选择
    • 执行脚本 - 例如:tail -f /var/log/nginx/access.log
    • 项目描述 - 可选的备注信息

5. 查看日志

  • 在项目列表中双击项目卡片
  • 或点击"打开"按钮
  • 自动打开新标签页并连接到服务器
  • 连接成功后自动执行预设的脚本
  • 可以直接在终端中输入命令进行交互

📝 常见日志脚本示例

Nginx 日志

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

Apache 日志

tail -f /var/log/apache2/access.log
tail -f /var/log/httpd/access_log

系统日志

tail -f /var/log/syslog
tail -f /var/log/messages
journalctl -f

Docker 容器日志

docker logs -f <container_name>
docker logs -f --tail 100 <container_name>

MySQL 日志

tail -f /var/log/mysql/error.log
tail -f /var/log/mysql/general.log

PostgreSQL 日志

tail -f /var/log/postgresql/postgresql.log

应用日志

tail -f /path/to/your/application.log
tail -f /var/log/app/error.log

🎯 高级功能

SSH 密钥认证

如果使用 SSH 密钥认证:

  1. 在服务器管理中选择"SSH 密钥认证"
  2. 粘贴私钥内容(包含 -----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 9000

2. 配置文件

# 创建或编辑 config.json
echo '{"port": 3000}' > config.json

# 启动服务
go run main.go

3. 默认端口

  • 默认端口是 10013,无需任何配置

配置优先级:命令行 -p > 命令行 --port > 配置文件 > 默认值(10013)

自动打开浏览器

OKSSH 支持启动后自动打开浏览器访问主页:

1. 命令行参数

# 启用自动打开浏览器
go run main.go -o
go run main.go --open-browser

2. 配置文件

# 创建或编辑 config.json
echo '{"openBrowser": false}' > config.json

3. 默认行为

  • 默认值为 true,即自动打开浏览器
  • 如果配置文件中没有定义 openBrowser 字段,默认开启

配置优先级:命令行参数 > 配置文件 > 默认值(true)

支持的操作系统:

  • Windows:使用 cmd /c start
  • macOS:使用 open 命令
  • Linux:依次尝试 xdg-opengoogle-chromefirefoxchromium

安全建议

  1. 数据文件保护 - data.json 包含服务器密码,建议设置文件权限:

    chmod 600 data.json
  2. 网络访问控制 - 默认只监听 127.0.0.1,如果需要远程访问:

    // 监听所有网络接口(谨慎使用)
    log.Fatal(http.ListenAndServe(":10013", nil))
    
    // 或使用反向代理 + HTTPS
  3. 防火墙设置 - 确保只开放必要端口

🐛 故障排除

连接失败

  1. 检查服务器 SSH 服务是否运行:

    systemctl status sshd
  2. 检查防火墙设置:

    sudo firewall-cmd --list-ports
  3. 测试 SSH 连接:

    ssh username@server-ip

认证失败

  1. 确认用户名和密码正确
  2. 如果使用密钥,确认私钥格式正确
  3. 检查服务器 SSH 配置允许密码认证

权限问题

某些日志文件需要 sudo 权限:

# 方案1:使用有权限的用户
# 方案2:配置 sudo 无密码(需谨慎)
# 方案3:将用户加入相应的组
sudo usermod -aG adm username

📄 项目结构

okssh/
├── main.go              # Go 后端主程序
├── go.mod               # Go 模块定义
├── go.sum               # 依赖版本锁定
├── data.json            # 数据存储(自动生成)
└── frontend/
    ├── index.html       # 主界面
    └── terminal.html    # 项目终端界面

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📜 许可证

MIT License

🙏 致谢

About

一个轻量级的 SSH 脚本执行工具,使用 Go + Web 技术栈,支持一键连接服务器并执行预设脚本。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors