Skip to content

Releases: hczs/fuckssh

v0.6.0

16 Jun 03:06

Choose a tag to compare

✨ 新功能

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.0

Windows (PowerShell):

irm https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.ps1 | iex

v0.5.0

03 Jun 02:47
962e63e

Choose a tag to compare

✨ 新功能

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 | bash

v0.4.1

30 May 05:29
48e748a

Choose a tag to compare

Changelog

  • c61ae95 Merge pull request #15 from hczs/feat/short-alias-fs
  • 48e748a feat(install): macOS 按架构下载安装包,不再默认下载通用包 (#16)
  • 0545956 feat(install): 添加短别名 fs 支持

安装:go install github.com/fuckssh/fuckssh@v0.4.1

v0.4.0

29 May 03:13
fa87cc6

Choose a tag to compare

🚀 新功能

非交互模式 — 一行命令配置 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 | bash

Windows (PowerShell)

irm https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.ps1 | iex

Go 安装

go install github.com/fuckssh/fuckssh/cmd/fuckssh@v0.4.0

v0.3.0

29 May 02:19
8b6a165

Choose a tag to compare

🚀 新功能

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 | bash

Windows (PowerShell)

irm https://raw.githubusercontent.com/hczs/fuckssh/master/scripts/install.ps1 | iex

Go 安装

go install github.com/fuckssh/fuckssh/cmd/fuckssh@v0.3.0

v0.2.1

28 May 03:18
dcf17e8

Choose a tag to compare

Bug Fixes

  • fix(list): 修复空行解析 bug — Host 块内空行不再导致解析失败(标准 ssh config 允许块内空行)
  • fix(list): 不支持的配置项改为静默忽略 — 用户 config 含 ForwardAgentProxyJump 等常见选项不再报错
  • fix(list): HasIncludeDirective 错误时输出 warning — 不再静默吞掉错误

新增测试

  • TestParse_emptyLineInsideHostBlock — 验证块内空行解析
  • Test_maybeWarnInclude_warnsOnError — 验证错误 warning 输出

v0.2.0

26 May 14:16

Choose a tag to compare

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

26 May 04:27

Choose a tag to compare

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