项目信息
- 项目仓库(本 fork):https://github.com/onepve/SkerrySSH
- 原作者仓库:https://github.com/SeCherkasov/SkerrySSH
- 官网首页(本 fork):https://ssh.onepve.com
- 原作者官网:https://skerry.sech.uk
SkerrySSH 是一款开源的跨平台 SSH 客户端,基于 Kotlin Multiplatform 开发,Linux、Windows、macOS、Android 四个平台共享同一套核心。它把终端、SFTP、端口转发、远程桌面、加密保险库、片段库、运行手册、主机监控、团队协作、AI 助手、自建同步全部集成在一个应用里,无需注册、不依赖厂商云、没有订阅。
如果你和我一样,每天要连好几台服务器、反复敲同样的命令、记着一堆密码和密钥——这篇文章值得完整看一遍。特别是片段变量和自建同步这两部分。
一、先看它支持什么
一句总结:一个”该有的样子”的 SSH 客户端,能想到的远程连接需求基本都覆盖了。

支持的连接协议(8 种)
| 协议 | 说明 |
|---|---|
| SSH | 主力连接方式,支持跳板机(ProxyJump 多级链)、证书认证、CA 签名主机密钥、键盘交互式 2FA、自动重连 |
| Mosh | 移动网络下不断线的远程终端,从 SSH 跳板启动 |
| Telnet | 老设备、交换机、路由器常用 |
| 串口 | 串口连接(桌面端 + Android USB-OTG),调路由器/嵌入式设备 |
| VNC | 远程桌面,本项目的自研客户端栈 |
| RDP | Windows 远程桌面,支持 H.264 硬解、截图、Ctrl+Alt+Del、剪贴板互通 |
| 容器 | 直接从主机列表进入 Docker 容器或 Kubernetes Pod 执行命令 |
| 本地 Shell | 不连任何设备,开一个本地终端标签页 |
另外支持从 ~/.ssh/config 导入主机、按组和标签管理主机、主机拖拽排序。
核心功能一览
| 功能 | 说明 |
|---|---|
| 终端 | 自研网格模拟,每个标签页最多 4 个平铺分屏、同步输入、历史搜索、语法高亮、命令调色板、录制回放 |
| SFTP | 双栏文件管理器:查看、编辑、排序、过滤、传输队列 |
| 端口转发 | 本地/远程/动态 SOCKS 转发,保险库解锁后自动拉起转发,一键转发主机上发现的端口 |
| 保险库 | Argon2id + XChaCha20-Poly1305 加密,存密码/SSH 密钥/证书/身份,生物解锁、30 天回收站 |
| 片段库 | 常用命令模板,8 种 ${{…}} 动态变量运行时展开 |
| 运行手册 | 多步骤流程编排,逐步执行、失败停止、运行日志 |
| 主机监控 | CPU/内存/网络/磁盘/进程/服务/容器,阈值告警 |
| 会话分享 | 加密通道实时分享终端给同事,只读或移交键盘 |
| 团队协作 | 端到端加密共享主机/片段/手册,成员权限分级,操作动态 |
| 生产保护 | 对打上 prod 标签的主机做风险评分,危险命令二次确认 |
| AI 助手 | 每主机独立策略,自带 OpenAI 密钥或本地模型,模型输出被当作不可信输入,执行需确认 |
| 云同步 | 自建服务器、零知识:WebSocket 实时推送、二维码配对设备、网页账户区 |
| 界面 | 深色/浅色主题、跟随系统、中英俄三语 |
二、保险库:你的密码保险箱
保险库是整套安全体系的核心。所有敏感信息(服务器密码、SSH 密钥、证书、身份)都加密存放在本地,只有输入主密码才能解锁。

- 加密强度:Argon2id 密钥派生 + XChaCha20-Poly1305 加密,主密码和密钥永远不会离开设备
- 条目类型:密码、SSH 密钥(私钥+公钥+指纹)、证书、身份
- 密钥管理:内置 SSH 密钥生成器,不用再去敲
ssh-keygen;密钥卡片显示算法、指纹、有效期、被哪些主机使用、上次使用时间 - 生物解锁:Android 支持指纹/面部解锁
- 回收站:删除的条目进回收站,30 天内可恢复,并且能在所有同步的设备上恢复
- 安全日志:记录解锁、复制密钥等安全事件
fork 增强:一键备份导出
这是本项目在原作者基础上的增强功能。安全中心提供一键备份导出,两种模式:
- 加密导出(.skerryvault):用主密码派生的密钥加密,适合日常备份
- 明文导出(.json):适合换设备、迁移、人工查看场景,导出前有红字警告
导入时自动识别格式,导入前仍需验证主密码。备份内容可读、格式规整,方便检查和迁移。
三、片段库:常用命令的智能仓库
片段库是日常用得最多的功能。把反复敲的命令存成片段,需要时输入几个字母就能补全出来。
片段变量:${{…}} 动态注入
片段不只是静态文本,它支持 8 种动态变量,运行时展开,执行前有确认预览:
| 变量 | 作用 | 示例 |
|---|---|---|
${{date:格式}} | 当前日期 | ${{date:YYYY-MM-DD}} → 2026-08-11 |
${{time:格式}} | 当前时间 | ${{time:HH:mm:ss}} → 09:30:00 |
${{timestamp}} | Unix 时间戳 | 1723000000 |
${{uuid}} | 随机 UUID | 8f2a1c3e-… |
${{random:长度}} | 随机字符串 | ${{random:16}} |
${{clipboard}} | 剪贴板内容 | 粘贴当前复制的文本 |
${{vault:条目名}} | 保险库条目值 | ${{vault:我的密钥}} |
${{param:默认值}} | 运行前向你询问参数 | ${{param:目标服务器}} |
保险库变量:${{vault:条目名}} 详解
运维经常要执行带敏感信息的命令,比如把公钥加到服务器上。以前:翻密钥 → 复制 → 拼命令 → 执行。现在:写一个模板,用变量占位,运行时自动从保险库取值:
K="${{vault:我的密钥}}"; echo "$K" >> ~/.ssh/authorized_keys运行时,SkerrySSH 从保险库读取”我的密钥”这个条目,替换占位符,弹出确认预览后执行:

类型自动分发——变量按保险库条目实际类型解析:
| 保险库条目类型 | 注入到命令的内容 |
|---|---|
| 密码 | 密码原文 |
| SSH 密钥 | 公钥(安全!) |
| 证书 | 证书文本 |
| 其他类型 | 无法注入,提示错误 |
安全红线:SSH 密钥条目注入的是公钥,私钥永远不会被注入到片段或终端命令里。私钥贴进终端等于泄密,需要私钥的场景请手动导出。
变量必须加引号——如果变量值是公钥(ssh-ed25519 AAAAC3...)这种带空格的:
# ❌ 错误:值带空格,bash 会把后半段当命令执行K=${{vault:我的密钥}}
# ✅ 正确:加引号包裹K="${{vault:我的密钥}}"所有 ${{vault:...}} 和 ${{param:...}} 用在 shell 里,一律加引号。
多变量混合使用
一个片段里可以用多个变量,各就各位:

PASS="${{vault:服务器密码}}"HOST="${{vault:生产服务器IP}}"KEY="${{vault:部署密钥}}"
sshpass -p "$PASS" ssh root@"$HOST" -i "$KEY" 'bash -s' < deploy.sh三个变量分别从保险库解析,密码、IP、密钥互不干扰。变量也可以和普通文本混排:
# 变量 + 固定文本混排ssh root@${{vault:服务器IP}} -p 22
# 变量 + 日期变量混排(备份场景)tar czf /backup/app-${{date:YYYYMMDD}}-${{time:HHmm}}.tar.gz /var/www同名条目处理——保险库允许重名。${{vault:服务器}} 命中多条时会弹出候选列表,显示类型标签 + 名称 + 备注让你点选:

fork 增强:片段/手册导入导出
本项目支持把片段库和运行手册整体导出为 JSON(明文),可手动编辑后重新导入。同步变更时可选择”合并”(按 id 更新/追加)或”直接替换”(清空重导),换设备、迁移、分享都非常方便。
四、运行手册:把操作流程固化成套路
运维常有一些固定套路:“重启服务 + 检查状态”、“备份数据库 + 传到异地”、“发布新版本”。运行手册把这些步骤编排成流程,在一个活动会话里逐步执行:
- 每步可以是一条命令,或一次 SFTP 传输
- 支持”暂停等待确认”(比如危险步骤前)
- 任一步非零退出码 → 立即停止,避免带病继续
- 运行日志记录每步的状态、耗时、输出
- 步骤里同样支持片段变量注入
配合片段变量,运行手册可以做到真正的一键化。
fork 增强:运行手册帮助示例
本项目为运行手册内置了三个独立帮助示例入口(重启 / 排查 / 磁盘),点哪个就建哪个,一例一动作,新用户照着模板改就能上手。
五、终端:不只是”能敲命令”
终端是自研的网格模拟器,不是套壳:
- 分屏:一个标签页最多 4 个平铺窗格,支持同步输入(一个屏打字,多个屏同时执行)
- 会话广播:把输入广播给多个会话,批量执行
- 搜索:回滚缓冲区搜索历史输出
- 语法高亮:命令行高亮、输出高亮(可分别开关)
- 命令调色板:基于历史命令的模糊匹配补全
- 智能路径:输出里的文件路径可以直接点开进 SFTP
- 录制回放:支持 asciinema v2 格式录制会话,应用内回放(演示、审计场景很有用)
- 输入安全:SafeTerminalInput 处理特殊输入
fork 增强:安卓端终端自动缩放
这是本项目在原作者基础上增加的(原版不缩放,无论输出多宽都按设定字号渲染)。在手机上,宽行输出会被折成”文字墙”,所以加了自动缩放(设置里可开关,描述为”输出折行时自动缩小字号”):
- 输出出现折行时,字号按 ×0.9 逐级缩小,直到一行放得下
- 缩放下限 10px(默认字号 13px 时约 77%,不会缩到看不清)
- 适配完成后锁定不再变化,之后只用 +/− 按钮手动调
- 桌面端不受影响(桌面端字号用滑杆手动调,无自动缩放)
六、主机监控:一眼看清服务器状态
为运维量身定做的监控屏:
- 实时指标:CPU、内存、网络(带历史曲线)、磁盘、Swap
- 进程/服务/挂载/容器:top 进程、systemd 单元状态、挂载点、容器列表
- 阈值告警:设备上本地告警,资源超阈值即时提醒
七、端口转发与 SFTP
端口转发(隧道)
支持本地转发、远程转发、动态 SOCKS 转发三种模式,适合数据库远程访问、内网穿透。几个细节很贴心:

- 保险库解锁后自动拉起之前配置的转发
- 服务发现:扫描主机上开放的端口,一键转发
- 隧道浏览器:从主机直接浏览隧道目标的服务
SFTP 双栏文件管理器
本地与远程双栏对比,支持查看、编辑、排序、过滤、传输队列,文件操作(复制/移动/重命名/删除/刷新)都有快捷键。SFTP 连接复用 SSH 会话,不用重复认证。

八、同步:免费、自建、零知识
这是整个软件最值得推荐的部分之一:同步完全免费、自建服务器、零知识加密。
为什么它很好
SkerrySSH 的同步:
- 服务器是你的:没有厂商云,同步服务器自己部署,可以放在自己的 VPS 上,甚至和业务服务器同机房
- 零知识设计:传到服务器上的是密文(加密的保险库记录和同步元数据),认证用 SRP-6a 协议,密码从不传输,服务器无法解密你存的任何数据
- 免费且开源:服务端 AGPL-3.0,客户端 GPL-3.0,没有隐藏收费
部署同步服务器(一条命令)
官方提供多架构 Docker 镜像,SQLite 存储,无需配置:
docker run -d --name skerry-sync -p 8080:8080 \ -e SKERRY_JWT_SECRET="$(openssl rand -base64 48)" \ -e SKERRY_ADMIN_TOKEN="$(openssl rand -hex 16)" \ -v skerry-data:/data \ secherkasov/skerry-sync:latest有现成的 docker-compose.yml 支持 PostgreSQL,也可以从源码构建。服务器自带网页前端:公开页(/)、账户区(/account)、运维控制台(/console)。

控制台里可以直观看到零知识设计:服务器上只有加密数据(ciphertext blobs),账户、设备、记录数量一目了然,主密码、密钥、主机名从未到达服务器。
使用说明
第一次使用:本机离线使用
- 打开 Skerry,设置主密码
- 选「本地加密存储」
- 进入主界面,开始用
联网云同步使用
- 设置主密码
- 选「自托管同步服务器」
- 填服务器地址和邮箱
- 输入主密码,点「连接」
- 自动注册账号,开始使用
本机转云同步(已用一段时间,现在开同步)
- 设置 → 同步
- 选「自托管同步服务器」
- 填服务器地址和邮箱
- 输入本机主密码,点「连接」
- 自动注册账号,本机数据原样保留并上传
注意:只有新注册账号时本机数据才会上传。如果账号已存在,云端数据会覆盖本地,本地数据丢失。
加新设备(设备二刚装好,还没用过)
- 设备一:设置 → 同步 → 关联设备
- 设备一:弹出二维码和配对码
- 设备二:打开 Skerry →「我有配对码」
- 设备二:粘贴配对码(或扫码)
- 设备二:设本设备新主密码 + 重复确认
- 设备二:点「关联此设备」
- 两台设备自动同步
设备二本机已有数据,切换到云同步
- 设备一:设置 → 同步 → 关联设备
- 设备一:弹出二维码和配对码
- 设备二:设置 → 同步 →「我有配对码」
- 设备二:粘贴配对码(或扫码)
- 设备二:输入本机现有主密码解锁
- 设备二:点「关联此设备」
- 设备二数据被云端覆盖,两台设备自动同步
同步的细节体验
- 实时推送:WebSocket 长连接,改动即时同步到其他设备,不用等手动刷新
- 二维码配对:新设备扫一扫就能关联,不用手输服务器地址和账号
- 网页账户区:浏览器访问自己的同步服务器账户区(独立密码),管理设备、查看元数据、远程吊销设备
九、团队协作与会话分享
Teams 团队空间
- 端到端加密共享主机、片段、运行手册给团队成员
- 成员权限分级(作用域控制),谁可以看、谁可以改、谁可以执行
- 活动动态:谁改了哪个主机、谁打开了谁的会话,一目了然
- 团队记录共享对话框
会话分享
把一个正在运行的终端实时分享给同事:加密通道传输,对方可以只读观看,也可以把键盘移交过去让对方操作。远程排障、带新人、演示都很好用。
十、AI 助手:带策略的辅助
AI 助手不是简单的”接个大模型”,它有完整的安全边界:
- 每主机独立策略:
- 严格(默认):只用本地模型,不发起任何外网请求
- 平衡:允许云端,但自动剔除明显机密(私钥、token、
password=…) - 宽松:云端不脱敏,仅限非敏感系统
- 关闭:该主机不显示助手
- 本地模型:支持 GGUF 模型(Qwen3、Phi-4 Mini)通过 llama.cpp 在设备本地推理,零外发流量
- 自带密钥:用你自己的 OpenAI 兼容密钥(BYOK),流量直连你设置的端点,中间没有服务器
- 输出不可信:模型输出被当作不可信输入——执行命令必须显式确认,危险命令还要二次确认
- 请求内容:只发送问题文本和固定系统提示,终端输出、主机列表、保险库记录不会发出去

十一、生产保护
对打上 prod 标签的主机,每条命令都会做风险评分,危险命令(rm -rf、drop table 之类的)执行前强制确认。手滑在生产环境执行删除的场景,这道防线能兜住。
十二、其他细节
- 深色/浅色主题:终端跟随应用主题,支持跟随系统模式
- 三语界面:中文、英文、俄文
- 便携版(fork 增强):Windows 便携版免安装,U 盘即插即用
- 自动更新(fork 增强):内置更新检测,新版本有提示
- 密码强度(fork 增强):设置密码时实时显示强度
- 信创适配(fork 增强):适配统信 UOS、银河麒麟等国产系统,提供 deb 安装包
十三、移动端:一样的客户端
Android 端不是精简版,是完整功能:同一核心、同一终端、同一保险库。主机列表、终端、保险库、片段库在手机上都能用,还支持指纹解锁。
| 手机主机列表 | 手机终端 |
|---|---|
![]() | ![]() |
配合自建同步,手机和电脑上的主机、密钥、片段实时保持一致,随身带着全部服务器。手机上宽行输出折行时,终端还会自动缩小字号(见「终端」章节的 fork 增强部分)。
十四、获取与使用
SkerrySSH 支持 Linux、Windows、macOS、Android 四个平台。
打开 ssh.onepve.com 网页,首页就有下载按钮,按平台下载对应安装包即可。网页本身也是在线 SSH 终端,应急时可以直接在浏览器里用。
- 桌面端:Windows(exe/msi)、Linux(deb/rpm/AppImage)、macOS(dmg)
- 移动端:Android(apk)
- 开源仓库:github.com/onepve/SkerrySSH
写在最后
SkerrySSH 把”连服务器、管密钥、敲命令、看监控、同步设备”这些运维日常整合在了一起,还都是免费、开源、数据自己掌控的。片段变量省掉了反复复制粘贴的麻烦,自建同步让你不把密钥交给任何第三方。
如果你也天天和服务器打交道,值得一试。

