在做 DartShell 之前,我也用过很多 SSH 客户端:功能越来越全、账号体系越来越复杂、云同步越来越“默认开启”。它们当然方便,但作为一个每天要连一堆服务器的人,我越来越在意一件事:
我的连接信息、私钥、操作历史,到底在谁的机器上?
所以 DartShell 从第一天起就定了一个原则:离线优先(Offline-First) 。
这不是一句口号,而是一套围绕“安全、隐私、可控”做出来的产品设计。
01|什么是“离线优先”?不等于“没有云”
先把概念说清楚。
- • 离线优先:默认情况下,应用在不联网时也能完整工作;核心数据与核心能力以本地为中心。
- • 不是“拒绝云” :云同步可以有,但必须满足两个条件:
1)可选(Opt-in) ,由用户明确开启
2)可控(Controllable) ,用户知道它同步什么、怎么同步、如何关闭与清理
对安全产品来说,“默认离线”意味着:
你不需要信任我、也不需要信任任何第三方云,只需要信任你的设备和你自己。
02|为什么安全问题上,“默认在线”是一条危险的路
很多工具为了体验,会把这些东西“顺手”放到云里:
- • 主机列表 / 标签 / 备注
- • 登录账号与密码(或其派生数据)
- • SSH 私钥、证书、跳板链路配置
- • 连接记录、命令历史、剪贴板、文件传输记录
- • 设备指纹、使用行为数据
在企业安全体系里,这些都属于敏感资产。
一旦默认在线,就会出现额外风险面:
- 1. 数据面扩大:本地一份 + 云端一份 + 多设备多副本
- 2. 攻击面扩大:账号体系、同步接口、第三方 SDK、token 管理
- 3. 合规面复杂:数据跨境、存储期限、可删除性、审计与授权
- 4. 信任链过长:你需要信任“应用厂商 + 云厂商 + 任何集成的 SDK”
而“离线优先”做的是反方向:
把风险面收缩回用户自己的设备。
03|DartShell 的离线优先:不是“更麻烦”,而是“更可控”
离线优先的目标不是让用户牺牲体验,而是做到:
默认最安全;需要便利时,再把便利做成“可选择的开关”。
在 DartShell 里,我更倾向于用下面这套思路做安全设计:
1)核心数据默认只在本地:你的服务器清单,不该出你的设备
主机信息、分组/标签、备注、连接参数等,默认只保存在本地。
这意味着即使你在地铁里没网、在机房里断网、在公司网络策略下无法访问外部服务,DartShell 也照常可用。
2)敏感凭据“尽量不落地”:私钥与密码应该被系统级安全能力保护
离线优先不等于“把一切写进本地数据库”。
真正的离线安全,应该是:
- • 能不存就不存(例如一次性输入、会话级使用)
- • 必须存就用系统安全区存(例如 Keychain 等系统能力)
这样做的好处是:
即便你把数据文件拷走,也不等于拿走了你的凭据。
3)最小化联网:联网只用于“你明确需要它做的事”
离线优先会强迫我们回答一个问题:
我为什么要联网?联网的价值是什么?
一个更安全的默认策略是:
- • 不为“能做统计、能做增长”而联网
- • 不为“方便开发、方便运营”而联网
- • 只为“用户明确需要的功能”联网(并且可关闭)
对用户来说,这种产品的心理负担更小:
你不需要担心“我是不是被默默上传了什么”。
04|DartShell 的多设备云同步:巧妙而安全的云同步方案
尽管 DartShell 遵循“离线优先”原则,它依然支持多设备云同步。
最重要的是,DartShell的云同步方案非常巧妙,并不需要依赖额外的账号体系。只需将数据存放目录放到云盘(如 iCloud Drive),这样你就能在不同设备间轻松同步你的连接信息和设置。
这种方式的安全性完全依赖于用户自己管理的云账号体系——比如 iCloud,你的敏感数据存储在自己的云空间里,完全掌控。
而且同步过程完全由你来控制,随时可以关闭或清理,不会自动上传任何数据到第三方云服务。
05|离线优先带来的 5 个安全收益(非常现实)
收益 1:减少“云端泄露”可能性
不把敏感资产放到云里,自然就少一条泄露通道。
收益 2:减少“账号体系”风险
很多安全事故并不是加密被破,而是账号被盗、token 泄露、撞库成功。
离线优先意味着:不依赖账号系统也能用,攻击面直接下降。
收益 3:更适合企业安全部门审查
企业常见要求:数据不出网、可审计、可控、可删除。
离线优先在理念上天然贴近这些要求。
收益 4:可用性更强
断网、弱网、代理、跨境网络波动、内网环境……
你会发现离线优先不是“安全洁癖”,也是“稳定性工程”。
收益 5:更符合“专业工具”的直觉
专业工具应该像扳手:
拿起来就用,放下就走,不要求你注册、登录、绑定、同步。
06|离线优先的代价:我愿意把难题留给自己
说实话,离线优先对开发者并不“友好”。
它意味着:
- • 同步不是“顺手接个第三方”,而是要做成可验证、可关闭、可回滚的体系
- • 数据加密、凭据隔离、权限控制要做得更细
- • 多设备体验不能靠“强制账号登录”,而要靠更聪明的产品设计
但我愿意承担这些成本,因为它换来的是:
用户对工具的长期信任。
安全产品最难的不是功能,而是信任。
信任一旦丢了,功能再多也没用。
07|结语:离线优先,是 DartShell 对“安全感”的长期承诺
DartShell 想做的不是“更花哨的 SSH 客户端”,而是一个你敢长期放在工作流核心的位置、敢连接生产环境的工具。
离线优先,本质是把安全的默认值调到最高:
- • 默认本地
- • 默认少联网
- • 默认少信任链
- • 默认可控
- • 默认可用
如果你和我一样,管理很多服务器、在意隐私与合规、希望工具更“专业”而不是更“社交”,那你会理解我为什么坚持这条路。
少一点“默认在线”,多一点“默认安全”。