我受够了记 IP 和密码,于是用 Rust 写了一个 SSH 管家
管理 10 台服务器后,我终于把
ssh user@10.0.0.1 -p 2222 -i ~/.ssh/some_key缩减成了sk prod。
你每天在重复什么?
bash
ssh root@192.168.1.100 -p 2222
# 输入密码...
# 密码错了,再来
ssh root@192.168.1.100 -p 2222 -i ~/.ssh/keys/prod_key
# 等等,这个服务器是哪个 key 来着?
cat ~/.ssh/config
# ...
管理 5 台以上的服务器,每次连接都要回忆 IP、端口、用户名、密钥文件路径。更别提换电脑后重新配置的噩梦。
sk:一条命令解决
bash
# 添加一次
sk add prod -H 192.168.1.100 -u root -p MyPassword
# 之后每天只需
sk prod
没了。就这两个命令。
它做了什么?
sk add 做了 5 件事:
- 测试连接(连不上直接拒绝,不写入无效配置)
- 写入标准
~/.ssh/config(你仍然可以用ssh prod) - 加密存储密码到系统钥匙串
- 记住你的 IP、端口、用户名
- 下次
sk prod自动使用存储的凭据
sk prod 做了 1 件事:
把你连到服务器。不提示密码,不要求记 IP,不让你选密钥文件。就一个字:快。
不只是密码
如果你的服务器已经配置了免密登录:
bash
# 用已有密钥
sk add prod -H 10.0.0.1 -u root -i ~/.ssh/prod_key
# 或者让 sk 帮你生成密钥并推送到服务器
sk add prod -H 10.0.0.1 -u root -k
日常管理
bash
sk list # 所有服务器一览
sk test prod # 测试连通性
sk remove prod staging # 批量删除
sk doctor # 健康检查
sk completion install # 一键开启 Tab 补全
安全吗?
- 密码存储在系统钥匙串(macOS Keychain / Windows Credential Manager / Linux Secret Service)
- 降级方案使用 AES-256-GCM + Argon2id(19MB 内存成本防暴力破解)
- 密钥绑定到机器指纹------密码文件复制到其他机器无法解密
- 纯 ssh2 协议实现,不依赖外部
ssh二进制
安装
bash
cargo install --git https://github.com/scliangx/sk.git
需要 Rust 1.70+ 和 OpenSSH 客户端。macOS / Linux / Windows 全平台支持。
10 秒 vs 3 秒
传统方式:
$ ssh root@192.168.1.100 -p 2222 -i ~/.ssh/prod_key
(回忆 IP → 回忆端口 → 回忆密钥路径 → 总共 10+ 秒)
sk 方式:
$ sk prod
(3 秒,包括 SSH 握手时间)
每天连接 20 次服务器,一个月省下 20 * 7 * 30 = 4200 秒 ≈ 70 分钟 。一年省下 14 小时。
这还只是连接。算上添加、删除、测试、检查配置的时间,sk 省下的更多。
项目状态
sk 目前处于 v0.1.0 早期开发阶段。核心功能稳定(156 个测试覆盖),计划中的 sync 等功能还在开发。
欢迎 Star, Issue, PR。
GitHub: https://github.com/scliangx/sk