gssh

command module
v1.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

README

gssh

Go 版本 SSH 服务器管理工具 - 快速登录和管理多台服务器

功能特性

  • 🚀 快速登录 - 通过交互式界面或命令行快速连接服务器
  • 📝 配置管理 - 统一管理多台服务器的连接信息
  • 🔐 多种认证 - 支持密钥登录和密码登录
  • 🏷️ 标签分组 - 支持服务器标签和分组管理
  • ☁️ 云端同步 - 通过 SSH 方式同步配置到云端(支持多终端)
  • 🎨 友好界面 - 使用 vim 风格的交互界面(j/k 移动,回车确认)

快速上手

# 1. 安装(需要本机已安装 Go 1.24+)
go install github.com/fijdemon/gssh@latest

# 2. 初始化配置文件(创建 ~/.gssh/config.yaml)
gssh init

# 3. 编辑配置文件,添加你的服务器
vim ~/.gssh/config.yaml

# 4. 打开交互式界面,从列表中选择并登录
gssh

# 或者直接通过名称登录
gssh <server-name>

安装

使用 go install
# 安装最新版本(会自动获取版本号)
go install github.com/fijdemon/gssh@latest

# 安装指定版本
go install github.com/fijdemon/[email protected]

版本号说明:使用 go install 安装时,版本号会自动从模块版本获取(如 v1.0.3)。

系统依赖

gssh 本身是一个单一可执行文件,但运行时依赖以下系统命令(类 Unix / macOS 环境):

  • ssh / scp:用于实际建立 SSH 连接以及推送同步配置
  • expect:用于在密码登录时自动输入密码(例如服务器登录时选择 password / auto

如果只使用密钥认证,可以不安装 expect,但所有基于密码的自动登录将不可用,届时会退回到由 ssh 自己提示输入密码。

使用方法

命令一览
  • gssh:打开交互式界面
  • gssh init:初始化配置文件
  • gssh <server-name>:按名称直接登录指定服务器
  • gssh pull:从云端拉取配置(只更新 servers
  • gssh push:将本地服务器列表推送到云端
  • gssh version:显示版本信息
  • gssh help:显示帮助信息
初始化配置

首次使用需要初始化配置文件:

gssh init

这个命令会:

  • 创建默认配置文件 ~/.gssh/config.yaml
  • 可选设置云端同步参数
  • 引导你完成基本配置
交互式界面

直接运行 gssh 打开交互式界面:

gssh

键位说明:

  • j / k:上下移动选择服务器
  • Enter:登录当前选中服务器
  • /:进入搜索模式(按名称 / 描述 / 标签过滤)
  • a:添加服务器(表单方式)
  • e:编辑当前选中服务器
  • d:删除当前选中服务器(有二次确认)
  • q:退出程序
  • Ctrl+C:强制退出

搜索模式:

  • 输入关键字即时过滤列表
  • Enter:确认搜索并返回列表
  • Backspace 且输入为空:退出搜索模式
  • Esc:退出搜索模式
直接登录

通过服务器名称直接登录:

gssh <server-name>
配置同步

从云端拉取配置:

gssh pull

推送配置到云端:

gssh push

重要说明:

  • 同步时只同步 servers 部分sync 配置由各客户端自己维护
  • 每个客户端的同步服务器地址、认证方式等可以不同
  • 使用同步功能前,需要先通过 gssh init 设置同步参数,或手动编辑配置文件

配置文件

配置文件位于 ~/.gssh/config.yaml

配置示例
version: "1.0"
sync:
  enabled: true
  type: ssh
  ssh_host: your-sync-server.com
  ssh_user: your-username
  ssh_path: ~/.gssh/config.yaml
  ssh_key: ~/.ssh/id_rsa
  auto_sync: false

servers:
  - name: prod-web
    hostname: 192.168.1.100
    user: root
    port: 22
    description: 生产环境Web服务器
    tags: [production, web, nginx]
    group: production
    auth:
      type: auto  # auto|password|key
      password: your-password
      identity_file: ~/.ssh/id_rsa
    created_at: "2024-01-01T00:00:00Z"
认证类型说明
  • auto - 根据配置自动选择合适方式:
    • 若配置了 identity_file 则使用密钥登录;
    • 否则若配置了 password 则使用密码登录;
    • 否则退回到由系统 ssh 自己处理(例如提示输入密码)。
  • key - 仅使用密钥登录(忽略密码)
  • password - 仅使用密码登录(忽略密钥)

云端同步设置

SSH 方式同步
  1. 确保可以 SSH 连接到同步服务器
  2. 在配置文件中设置同步参数:
    • ssh_host: 同步服务器地址
    • ssh_user: SSH 用户名
    • ssh_path: 远程配置文件路径
    • ssh_key: SSH 密钥路径(可选)
    • password: SSH 密码(可选,与密钥二选一,用于程序化读取远程配置)
同步机制说明
  • 只同步服务器列表pullpush 操作只同步 servers 部分
  • sync 配置独立:每个客户端的 sync 配置(服务器地址、认证方式等)由本地维护,不会被同步覆盖
  • 多终端支持:不同终端可以配置不同的同步服务器,但共享相同的服务器列表
使用示例
# 拉取配置(只更新 servers 列表,保留本地 sync 配置)
gssh pull

# 推送配置(只推送 servers 列表,不推送 sync 配置)
gssh push

推送 (gssh push) 时:

  • 如果配置了 ssh_key,会使用 scp -i 无感推送;
  • 如果没有配置 ssh_key,则直接调用 scp,必要时由 scp 自己提示你输入密码;
  • 不再依赖 sshpass

安全注意事项

  • 明文密码存储

    • servers[*].auth.passwordsync.password 会以明文形式写入 ~/.gssh/config.yaml
    • 建议:
      • 尽量使用 SSH 密钥认证(配置 identity_file / ssh_key);
      • 保证配置文件权限严格(推荐 chmod 600 ~/.gssh/config.yaml);
      • 不要将配置文件提交到任何版本库。
  • 主机密钥校验关闭

    • 为了降低首次使用门槛,内部调用 ssh / scp 时统一使用:
      • -o StrictHostKeyChecking=no
      • -o UserKnownHostsFile=/dev/null
    • 这意味着不会校验远端主机指纹,在不可信网络环境中存在被中间人攻击(MITM)的风险。
    • 如果你有更高的安全要求,可以自行 fork 并移除这些选项。
  • 本地环境假设

    • gssh 设计为在你控制的本机上使用,不考虑多用户共享或不可信宿主环境。
    • 请确保本机账号本身是可信的,且终端历史不会泄露敏感信息。

依赖

开源协议

本项目使用 MIT License,详情见 LICENSE 文件。

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
ssh
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL