# gossh **Repository Path**: MM-Q/gossh ## Basic Information - **Project Name**: gossh - **Description**: gossh的汉化版 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-16 - **Last Updated**: 2025-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoSSH [![语言](https://img.shields.io/badge/Language-Go-blue.svg)](https://go.dev) [![Github 工作流状态](https://img.shields.io/github/actions/workflow/status/windvalley/gossh/gosshci.yaml?branch=main)](https://github.com/windvalley/gossh/actions/workflows/gosshci.yaml) [![质量门槛状态](https://sonarcloud.io/api/project_badges/measure?project=windvalley_gossh&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=windvalley_gossh) [![版本](https://img.shields.io/github/v/release/windvalley/gossh?include_prereleases)](https://github.com/windvalley/gossh/releases) ![支持](https://img.shields.io/badge/Supports-macOS,%20Linux-orange) ![页面浏览量](https://views.whatilearened.today/views/github/windvalley/gossh.svg) [![发布下载总量](https://img.shields.io/github/downloads/windvalley/gossh/total)](https://github.com/windvalley/gossh/releases) [![许可证](https://img.shields.io/github/license/windvalley/gossh)](LICENSE) Gossh 是一款用 Go 编写的高性能、高并发 SSH 工具。 可高效管理上万台 Linux 服务器集群,速度是 `Ansible` 的 10 倍。 若你需要更强性能与更好易用性,一定会爱上 `gossh`。 如有问题、疑问或建议,欢迎随时开新 Issue。 ## 💝 功能 - 四类 SSH 任务: `command`:在目标主机执行命令。 `script`:在目标主机执行本地 Shell 脚本。 `push`:将本地文件/目录推送到目标主机。 `fetch`:将目标主机文件/目录拉取到本地。 - 自动检测以下登录用户(默认 `$USER`)认证方式: `密码`:来自清单文件,或参数 `-k/--auth.ask-pass`、`-p/--auth.password`、`-a/--auth.pass-file`,或配置文件。 `公钥认证`:使用身份文件(默认 `~/.ssh/id_rsa`),支持带口令的私钥。 `SSH-Agent 认证`:通过系统环境变量 `$SSH_AUTH_SOCK`。 三种认证同时有效时,优先级为:`SSH-Agent` > `公钥` > `密码`。 - 指定目标主机方式: 空格分隔的主机/主机模式/主机组名,或 `-i/--hosts.inventory` 指定的清单文件,或配置文件。 - 展开主机模式,支持如下示例: ```text 10.16.0.[1-10] foo[01-03].bar.com foo[01-03,06,12-16].idc[1-3].[beijing,wuhan].bar.com ``` - 清单文件支持变量: 可用变量:`host`、`port`、`user`、`password`、`keys`、`passphrase`。示例: ```text alias_name_node1 host=node1.sre.im alias_name_node2 host=192.168.33.12 port=8022 user=vagrant password=123456 keys=~/.ssh/id_rsa passphrase=xxx node3.sre.im user=vagrant password=GOSSH-AES256:9cfe499133b69a6c7fc62b5b6ba72d3d8dfb4d0e7987170a40c5d50bb5d71e19 ``` - 清单文件分组示例: ```text # 无组主机 node1.sre.im # webserver 组 [webserver] node2.sre.im port=6022 node3.sre.im # 组变量 [webserver:vars] port=8022 user=zhangsan password=明文或 Vault 加密 [dbserver] db[1-3].sre.im # project1 组包含 webserver 与 dbserver [project1:children] webserver dbserver ``` - 支持 `sudo` 切换身份(默认 `root`)执行命令/脚本或拉取文件。 - 可指定国际化环境变量(如 `zh_CN.UTF-8`、`en_US.UTF-8`)保持输出语言一致。 - 三类超时(秒): 单台连接超时(默认 `10`)。 单台子任务(command/script/push/fetch)超时。 整个 `gossh` 任务超时。 - 输出可定向到文件、屏幕或同时输出;支持彩色、JSON、详细(debug)、静默模式。 - 高并发,可自定义并发数(默认 `1`)。 - 支持 SSH 代理(ProxyJump)连接目标主机。 - 提供 `vault` 子命令,加解密敏感信息(密码、口令),保障安全。 - 危险命令检测,可自定义黑名单。 - 支持配置文件,将不常变动的参数写入文件,命令行参数优先。 默认查找 `$PWD/.gossh.yaml` 或 `$HOME/.gossh.yaml`,前者优先级更高。配置文件可选。 - 提供 `config` 子命令,一键生成配置文件。 ## 🛠 安装 macOS / Linux 预编译二进制文件见 [GitHub Releases](https://github.com/windvalley/gossh/releases)。 亦可源码编译安装: ```sh $ git clone --depth 1 https://github.com/windvalley/gossh $ cd gossh # 需先安装 Go 环境 $ make && make install ``` ## 📜 用法 ```text $ gossh -h Gossh 是一款高性能、高并发 SSH 工具。 可高效管理上万台 Linux 服务器集群。 更多信息:https://github.com/windvalley/gossh 用法: gossh [命令] 可用命令: command 在目标主机执行命令 script 在目标主机执行本地脚本 push 推送本地文件/目录到目标主机 fetch 拉取目标主机文件/目录到本地 vault 加解密工具 config 生成配置文件 version 版本信息 help 查看命令帮助 completion 生成 shell 自动补全脚本 全局参数: -u, --auth.user string 登录用户(默认 $USER) -p, --auth.password string 登录密码 -k, --auth.ask-pass 交互输入密码 -a, --auth.pass-file string 存放密码的文件 -I, --auth.identity-files strings 身份文件列表(默认 [~/.ssh/id_rsa]) -K, --auth.passphrase string 私钥口令 -V, --auth.vault-pass-file string 存放 Vault 密码的文件或可执行脚本 -i, --hosts.inventory string 存放目标主机的清单文件 -P, --hosts.port int 目标主机端口(默认 22) -l, --hosts.list 仅输出目标主机列表,不执行任何操作 -s, --run.sudo 使用 sudo 执行命令/脚本或拉取文件 -U, --run.as-user string sudo 目标用户(默认 "root") -L, --run.lang string 执行命令时指定的语言环境(如 zh_CN.UTF-8|en_US.UTF-8) -c, --run.concurrency int 并发连接数(默认 1) -B, --run.command-blacklist strings 禁止在目标主机执行的命令黑名单(默认:[rm,reboot,halt,shutdown,init,mkfs,mkfs.*,umount,dd]) -o, --output.file string 输出文件路径 -j, --output.json 以 JSON 格式输出 -C, --output.condense 精简输出并禁用颜色 -q, --output.quiet 屏幕不输出任何信息 -v, --output.verbose 显示调试信息 -X, --proxy.server string 代理服务器地址 --proxy.port int 代理端口(默认 22) --proxy.user string 代理登录用户(默认与 auth.user 相同) --proxy.password string 代理密码(默认与 auth.password 相同) --proxy.identity-files strings 代理身份文件(默认与 auth.identity-files 相同) --proxy.passphrase string 代理私钥口令(默认与 auth.passphrase 相同) -t, --timeout.command int 单台主机子任务超时秒数 --timeout.task int 整个任务超时秒数 --timeout.conn int 单台主机连接超时秒数(默认 10) --config string 配置文件(默认 {$PWD,$HOME}/.gossh.yaml) -h, --help 帮助 使用 "gossh [命令] --help" 查看子命令详细帮助。 ``` ## 🚀 性能 客户端:4vCPUs / 8GiB 目标机:清单含 936 台服务器,分布于全国 86 个 IDC。 **Ansible:** ```sh $ time ansible all -i hosts.list -m command -a "uptime" -f 100 -k ``` 结果: ```text real 1m18.858s user 3m18.566s sys 1m24.263s ``` **Gossh:** ```sh $ time gossh command -i hosts.list -e "uptime" -c 100 -k ``` 结果: ```text [INFO] 2021-12-22 23:06:50.837228 成功 936 台,失败 0 台,耗时 6.30s real 0m6.316s user 0m13.529s sys 0m0.592s ``` ## 📄 文档 - [配置](docs/config.md) - [清单](docs/inventory.md) - [认证](docs/authentication.md) - [命令](docs/command.md) - [脚本](docs/script.md) - [推送](docs/push.md) - [拉取](docs/fetch.md) - [Vault](docs/vault.md) ## 📝 更新日志 [CHANGELOG](CHANGELOG.md) ## ✨ 贡献 欢迎提 PR,步骤如下: 1. 在 [gossh/issues](https://github.com/windvalley/gossh/issues) 开新 Issue。 2. Fork 本仓库,基于 `main` 分支创建特性分支。 3. 提交更改。 4. 发起 Pull Request。 > 注:任何贡献均遵循 [MIT](LICENSE) 许可证。 ## ⚖️ 许可证 MIT 许可证,详见 [LICENSE](LICENSE)。