4485 字
22 分钟
SkerrySSH:跨平台 SSH 客户端,把远程连接、密钥和常用命令都管起来
2026-08-11

项目信息#


SkerrySSH 是一款开源的跨平台 SSH 客户端,基于 Kotlin Multiplatform 开发,Linux、Windows、macOS、Android 四个平台共享同一套核心。它把终端、SFTP、端口转发、远程桌面、加密保险库、片段库、运行手册、主机监控、团队协作、AI 助手、自建同步全部集成在一个应用里,无需注册、不依赖厂商云、没有订阅

如果你和我一样,每天要连好几台服务器、反复敲同样的命令、记着一堆密码和密钥——这篇文章值得完整看一遍。特别是片段变量自建同步这两部分。

一、先看它支持什么#

一句总结:一个”该有的样子”的 SSH 客户端,能想到的远程连接需求基本都覆盖了。

桌面终端主界面

支持的连接协议(8 种)#

协议说明
SSH主力连接方式,支持跳板机(ProxyJump 多级链)、证书认证、CA 签名主机密钥、键盘交互式 2FA、自动重连
Mosh移动网络下不断线的远程终端,从 SSH 跳板启动
Telnet老设备、交换机、路由器常用
串口串口连接(桌面端 + Android USB-OTG),调路由器/嵌入式设备
VNC远程桌面,本项目的自研客户端栈
RDPWindows 远程桌面,支持 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 密钥、证书、身份)都加密存放在本地,只有输入主密码才能解锁。

保险库界面(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}}随机 UUID8f2a1c3e-…
${{random:长度}}随机字符串${{random:16}}
${{clipboard}}剪贴板内容粘贴当前复制的文本
${{vault:条目名}}保险库条目值${{vault:我的密钥}}
${{param:默认值}}运行前向你询问参数${{param:目标服务器}}

保险库变量:${{vault:条目名}} 详解#

运维经常要执行带敏感信息的命令,比如把公钥加到服务器上。以前:翻密钥 → 复制 → 拼命令 → 执行。现在:写一个模板,用变量占位,运行时自动从保险库取值:

Terminal window
K="${{vault:我的密钥}}"; echo "$K" >> ~/.ssh/authorized_keys

运行时,SkerrySSH 从保险库读取”我的密钥”这个条目,替换占位符,弹出确认预览后执行:

片段变量注入流程

类型自动分发——变量按保险库条目实际类型解析:

保险库条目类型注入到命令的内容
密码密码原文
SSH 密钥公钥(安全!)
证书证书文本
其他类型无法注入,提示错误

安全红线:SSH 密钥条目注入的是公钥,私钥永远不会被注入到片段或终端命令里。私钥贴进终端等于泄密,需要私钥的场景请手动导出。

变量必须加引号——如果变量值是公钥(ssh-ed25519 AAAAC3...)这种带空格的:

Terminal window
# ❌ 错误:值带空格,bash 会把后半段当命令执行
K=${{vault:我的密钥}}
# ✅ 正确:加引号包裹
K="${{vault:我的密钥}}"

所有 ${{vault:...}}${{param:...}} 用在 shell 里,一律加引号。

多变量混合使用#

一个片段里可以用多个变量,各就各位:

多变量混合使用

Terminal window
PASS="${{vault:服务器密码}}"
HOST="${{vault:生产服务器IP}}"
KEY="${{vault:部署密钥}}"
sshpass -p "$PASS" ssh root@"$HOST" -i "$KEY" 'bash -s' < deploy.sh

三个变量分别从保险库解析,密码、IP、密钥互不干扰。变量也可以和普通文本混排:

Terminal window
# 变量 + 固定文本混排
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 会话,不用重复认证。

SFTP 文件传输

八、同步:免费、自建、零知识#

这是整个软件最值得推荐的部分之一:同步完全免费、自建服务器、零知识加密

为什么它很好#

SkerrySSH 的同步:

  • 服务器是你的:没有厂商云,同步服务器自己部署,可以放在自己的 VPS 上,甚至和业务服务器同机房
  • 零知识设计:传到服务器上的是密文(加密的保险库记录和同步元数据),认证用 SRP-6a 协议,密码从不传输,服务器无法解密你存的任何数据
  • 免费且开源:服务端 AGPL-3.0,客户端 GPL-3.0,没有隐藏收费

部署同步服务器(一条命令)#

官方提供多架构 Docker 镜像,SQLite 存储,无需配置:

Terminal window
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),账户、设备、记录数量一目了然,主密码、密钥、主机名从未到达服务器。

使用说明#

第一次使用:本机离线使用

  1. 打开 Skerry,设置主密码
  2. 选「本地加密存储」
  3. 进入主界面,开始用

联网云同步使用

  1. 设置主密码
  2. 选「自托管同步服务器」
  3. 填服务器地址和邮箱
  4. 输入主密码,点「连接」
  5. 自动注册账号,开始使用

本机转云同步(已用一段时间,现在开同步)

  1. 设置 → 同步
  2. 选「自托管同步服务器」
  3. 填服务器地址和邮箱
  4. 输入本机主密码,点「连接」
  5. 自动注册账号,本机数据原样保留并上传

注意:只有新注册账号时本机数据才会上传。如果账号已存在,云端数据会覆盖本地,本地数据丢失。

加新设备(设备二刚装好,还没用过)

  1. 设备一:设置 → 同步 → 关联设备
  2. 设备一:弹出二维码和配对码
  3. 设备二:打开 Skerry →「我有配对码」
  4. 设备二:粘贴配对码(或扫码)
  5. 设备二:设本设备新主密码 + 重复确认
  6. 设备二:点「关联此设备」
  7. 两台设备自动同步

设备二本机已有数据,切换到云同步

  1. 设备一:设置 → 同步 → 关联设备
  2. 设备一:弹出二维码和配对码
  3. 设备二:设置 → 同步 →「我有配对码」
  4. 设备二:粘贴配对码(或扫码)
  5. 设备二:输入本机现有主密码解锁
  6. 设备二:点「关联此设备」
  7. 设备二数据被云端覆盖,两台设备自动同步

同步的细节体验#

  • 实时推送:WebSocket 长连接,改动即时同步到其他设备,不用等手动刷新
  • 二维码配对:新设备扫一扫就能关联,不用手输服务器地址和账号
  • 网页账户区:浏览器访问自己的同步服务器账户区(独立密码),管理设备、查看元数据、远程吊销设备

九、团队协作与会话分享#

Teams 团队空间#

  • 端到端加密共享主机、片段、运行手册给团队成员
  • 成员权限分级(作用域控制),谁可以看、谁可以改、谁可以执行
  • 活动动态:谁改了哪个主机、谁打开了谁的会话,一目了然
  • 团队记录共享对话框

会话分享#

把一个正在运行的终端实时分享给同事:加密通道传输,对方可以只读观看,也可以把键盘移交过去让对方操作。远程排障、带新人、演示都很好用。

十、AI 助手:带策略的辅助#

AI 助手不是简单的”接个大模型”,它有完整的安全边界:

  • 每主机独立策略
    • 严格(默认):只用本地模型,不发起任何外网请求
    • 平衡:允许云端,但自动剔除明显机密(私钥、token、password=…
    • 宽松:云端不脱敏,仅限非敏感系统
    • 关闭:该主机不显示助手
  • 本地模型:支持 GGUF 模型(Qwen3、Phi-4 Mini)通过 llama.cpp 在设备本地推理,零外发流量
  • 自带密钥:用你自己的 OpenAI 兼容密钥(BYOK),流量直连你设置的端点,中间没有服务器
  • 输出不可信:模型输出被当作不可信输入——执行命令必须显式确认,危险命令还要二次确认
  • 请求内容:只发送问题文本和固定系统提示,终端输出、主机列表、保险库记录不会发出去

AI 助手设置

十一、生产保护#

对打上 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 把”连服务器、管密钥、敲命令、看监控、同步设备”这些运维日常整合在了一起,还都是免费、开源、数据自己掌控的。片段变量省掉了反复复制粘贴的麻烦,自建同步让你不把密钥交给任何第三方。

如果你也天天和服务器打交道,值得一试。