Releases: hczs/fuckssh
Releases · hczs/fuckssh
v0.6.0
✨ 新功能
export / import — 加密备份与跨机迁移
换电脑或重装系统时,可以把 ~/.ssh/config 和私钥打包成加密备份,在新机器上一键恢复。
# 旧机器:导出到当前目录(交互设置主密码)
fuckssh export
# 或指定输出目录
fuckssh export ~/Desktop
# 新机器:导入并合并
fuckssh import fuckssh-backup-20260616-102739.tar.enc- 加密方案:Argon2id + AES-256-GCM,主密码至少 6 位且不能纯数字
- 导出内容:
~/.ssh/config、fuckssh 管理的私钥,以及 config 中IdentityFile引用的外部私钥 - 导入前自动备份现有 config;合并时检测 Host 别名冲突,支持覆盖 / 跳过 / 重命名三种策略
- 备份文件权限
0600,请妥善保管
SSH config 智能合并
import 在目标机器已有 Host 条目时,会逐条检测冲突并引导你选择处理方式:
- 覆盖 — 用备份中的配置替换本地同名 Host
- 跳过 — 保留本地,忽略备份中的同名 Host
- 重命名 — 为导入的 Host 指定新别名(支持自定义密钥文件名)
密钥文件同样按冲突策略处理,避免误覆盖已有私钥。
🐛 修复
- import 密钥合并:修复合并时密钥被错误覆盖的问题;导出时正确包含 config 引用的外部私钥
- import 重命名:冲突重命名时可自定义密钥文件名
- 密码输入:统一终端密码提示的换行符,修复部分终端下显示异常
- 安装脚本:改用 GitHub 302 重定向获取最新版本,避免 API 速率限制导致安装失败
📖 文档
- 重构中英文 README,补充
export/import完整用法与迁移示例 - 明确产品定位:围绕标准
~/.ssh/config管理,而非替代 SSH 客户端
安装方式:
# 一键安装(推荐,自动安装最新版)
curl -fsSL https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.sh | sh
# 指定本版本
curl -fsSL https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.sh | sh -s -- --version v0.6.0
# Go install
go install github.com/fuckssh/fuckssh@v0.6.0Windows (PowerShell):
irm https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.ps1 | iexv0.5.0
✨ 新功能
delete 命令
通过别名删除 SSH Host 条目:
fuckssh delete myserver # 交互确认后删除
fuckssh delete myserver -f # --force 跳过确认- 删除前自动备份 config,使用文件锁保证并发安全
- 自动清理 fuckssh 管理的密钥文件(
id_ed25519_fuckssh_*),用户自有密钥不受影响 - 支持大小写不敏感匹配、多别名匹配
edit 命令
通过交互式向导编辑已有 Host 条目:
fuckssh edit myserver- 支持修改 Alias、HostName、User、Port、IdentityFile、Remark
- 行级编辑保留未知配置项(ProxyJump、ForwardAgent 等)
- 别名可改,带冲突检测;确认前自动备份
全命令短别名
所有命令新增单字母短别名,利用 Cobra 原生 Aliases 字段,零额外代码:
| 命令 | 短别名 |
|---|---|
list |
ls |
search |
s |
add |
a |
edit |
e |
delete |
d |
version |
v |
🐛 修复
- add 耗时统计:排除用户在 TUI 向导中填写表单的时间,仅统计实际执行耗时
- delete 参数缺失提示:不再显示原始 cobra 错误,改为友好提示
📖 文档
- README 补充全部 6 个命令的终端 Demo 演示
- README 补充安装脚本自动创建
fs短别名的说明
安装方式:
# Go install
go install github.com/fuckssh/fuckssh@v0.5.0
# 一键安装脚本(推荐)
curl -fsSL https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.sh | bashv0.4.1
v0.4.0
🚀 新功能
非交互模式 — 一行命令配置 SSH 主机
add 命令新增 --host 等 CLI flag,跳过 TUI 向导,一条命令完成 SSH 主机配置。非交互模式先测连通性,通过后才动本地文件,失败时零副作用。
# 密码模式(自动生成密钥 + 部署公钥 + 写配置)
fuckssh add -H 1.2.3.4 -u root -P mypass -a myserver
# 密钥模式(已有私钥,只写配置)
fuckssh add -H 1.2.3.4 -u root -i ~/.ssh/id_ed25519
# 最简(user 默认 root,alias 从 host 自动生成)
fuckssh add -H 1.2.3.4 -P mypass| Flag | 短写 | 说明 |
|---|---|---|
--host |
-H |
主机地址(触发非交互模式) |
--user |
-u |
用户名(默认 root) |
--port |
-p |
端口(默认 22) |
--alias |
-a |
Host 别名(默认从 host 生成) |
--password |
-P |
密码 → 密码模式 |
--identity-file |
-i |
私钥路径 → 密钥模式 |
--remark |
-r |
备注 |
version 子命令
新增 fuckssh version,输出版本号、commit hash 与构建日期。原有的 fuckssh --version 依然可用。
fuckssh version
# v0.4.0 (fa87cc6, 2026-05-29)📦 安装
macOS / Linux (一键脚本)
curl -fsSL https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.sh | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.ps1 | iexGo 安装
go install github.com/fuckssh/fuckssh/cmd/fuckssh@v0.4.0v0.3.0
🚀 新功能
search 命令增强
- 多关键词 OR 搜索:
fuckssh search web prod任一关键词命中即匹配 - 字段过滤 flag:
--user、--host、--port精确收窄结果 - 结果高亮:TTY 下自动用粗体黄色高亮匹配关键词,管道输出无颜色
用法示例:
fuckssh search srv1 example # OR 匹配
fuckssh search --user root srv # 关键词 + 字段过滤
fuckssh search --port 2222 prod # 按端口过滤🔧 改进
- 重构:合并多组碎片文件,减少文件数
- 文档:新增 list/search/add 命令执行时序图
- CI:测试矩阵加 Windows、go mod verify
- 底层包错误信息英文化(Go 惯例)
📦 安装
macOS / Linux (一键脚本)
curl -fsSL https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.sh | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.ps1 | iexGo 安装
go install github.com/fuckssh/fuckssh/cmd/fuckssh@v0.3.0v0.2.1
Bug Fixes
- fix(list): 修复空行解析 bug — Host 块内空行不再导致解析失败(标准 ssh config 允许块内空行)
- fix(list): 不支持的配置项改为静默忽略 — 用户 config 含
ForwardAgent、ProxyJump等常见选项不再报错 - fix(list): HasIncludeDirective 错误时输出 warning — 不再静默吞掉错误
新增测试
TestParse_emptyLineInsideHostBlock— 验证块内空行解析Test_maybeWarnInclude_warnsOnError— 验证错误 warning 输出
v0.2.0
Changelog
- a964796 Merge pull request #1 from hczs/cursor/fix-password-edit-after-conn-test
- 71df8a7 Merge pull request #2 from hczs/cursor/fix-password-edit-after-conn-test
- 2e1316b Merge pull request #3 from hczs/cursor/fix-password-edit-after-conn-test
- ce9e618 Merge pull request #4 from hczs/cursor/fix-password-edit-after-conn-test
- 2b61ac2 feat(install): 添加跨平台一键安装脚本并更新 README
- 06fda8e fix(ci): 仅在 master 合并时触发 CI
- 53d9b00 fix(install): macOS 安装回退分架构包并修复通用二进制发布
- e3c29a3 fix(install): 一键安装 URL 使用 master 分支
- 0c847e6 fix(test): 隔离本机 i18n 设置并修正表头断言
- 818e416 fix(wizard): 测连成功后允许修改密码与私钥路径
- 94f5a87 fix(wizard): 用户名字段留空回车默认使用 root
安装:go install github.com/fuckssh/fuckssh@v0.2.0
v0.1.0
Changelog
- 465efcf chore(keys): Phase 3 验收记录
- edbf7c2 feat(add): 修复 IdentityFile 路径并改进公钥部署权限处理
- df52ddd feat(add): 支持 Host 备注写入 config 注释并在 list/search 展示
- 4700cd6 feat(add): 统一 config 备份与密钥目录布局
- dcfbbd3 feat(cli): list/search 主机表改用 Unicode 框线表格输出
- 63cb6c2 feat(cli): 优化 list 响应与输出质量
- 0148280 feat(cli): 命令结束后在 stderr 输出执行耗时
- ad45f58 feat(cli): 国际化与向导/列表 UX 对齐
- 9c3c9c2 feat(cmd): add 串联密码模式并映射部署失败退出码 4
- 2ed1234 feat(cmd): add 串联密钥向导并写入 ssh config
- 2705d4b feat(cmd): add 启动前检测 ssh 并警告但不阻断
- eb91985 feat(cmd): 实现 list 子命令表格输出
- bc508a7 feat(cmd): 实现 search 子命令模糊匹配
- 5733f06 feat(config): 受限解析 ssh config 为 HostEntry
- 74609d9 feat(config): 备份 ssh config 并追加 Host 块
- 48e63b4 feat(keys): 写入密钥对并设置私钥权限
- 0ea2f11 feat(keys): 密钥文件命名与别名 sanitize
- 7c43eac feat(keys): 生成 OpenSSH 格式 Ed25519 密钥对
- 5f894c3 feat(platform): 分平台 OpenSSH 客户端安装指引
- dcc3ec9 feat(platform): 跨平台解析 ~/.ssh 与 config 路径
- 9ca9199 feat(release): 添加 GoReleaser 与 v* tag 发布流水线
- 8f58892 feat(sshclient): 密码登录部署公钥到 authorized_keys
- d397078 feat(sshclient): 检测 PATH 中的 ssh 并返回安装指引
- 97019bd feat(wizard): add 向导全量堆叠表单与统一按键导航
- 04667a2 feat(wizard): 优化 add 向导交互、密码测连与确认流程
- 831001f feat(wizard): 优化密码模式向导交互与连接测试
- f4c884d feat(wizard): 密码模式表单与备份→密钥→config→部署编排
- 0f6e7c9 feat(wizard): 密钥连接 huh 向导与输入校验
- 9a11e85 feat(wizard): 打磨 add 向导 UX 与双模式体验一致性
- 99e7479 feat(wizard): 统一 Catppuccin 主题并强化已填行对比度
- ccc1a98 fix(add): 备份后失败时恢复 config,避免误删与回滚遗漏
- 64541ce fix(ci): 移除 golangci-lint v2 已废弃的 exclude-use-default 配置
- 7ef3b39 fix(wizard): 修复 add 向导别名冲突提示与测连后跳转
- d8051a4 fix(wizard): 规范 Host 别名并简化 Ctrl+C 取消输出
- 190fbc3 fix: 修复 Linux CI 测试与 golangci-lint 版本不兼容
- d1731f4 refactor: 落实 20260525 代码审查修复
安装:go install github.com/fuckssh/fuckssh@v0.1.0