Open Terminal — 隐私政策
最后更新 / Last updated: 2026-06-07
中文版
Open Terminal 不收集、不上传、不分享你的任何数据。
所有服务器配置、密码、命令历史、日志、偏好设置全部仅保存在你这台设备本地。
本 App 没有后端服务器,没有云同步,不内嵌任何第三方分析、追踪或广告 SDK。
我们存什么,存在哪
| 数据 | 用途 | 存储位置 |
| 服务器配置(名称/主机/端口/用户名/标签/备注) | 列表显示与建立 SSH 连接 | 设备本地 UserDefaults |
| SSH 密码 | 连接服务器时使用 | 设备本地 Keychain(系统加密,仅本 App 可读) |
| 终端会话输出 | 当前连接期间显示 | 仅内存,断开连接后立即清空,不持久化 |
| 命令输入历史 | 输入框 ↑/↓ 翻历史 | 仅内存,会话级,断开即丢 |
| 自定义命令(命令面板) | 一键发送常用命令 | 设备本地 UserDefaults |
| 连接日志 | 查看连接情况 | 设备本地 UserDefaults,可在设置里随时清空 |
| 偏好设置(主题/字体/字号/触感/保活/超时等) | 个性化 | 设备本地 UserDefaults |
我们 不 做的事
- 不向任何远端服务器上传你的数据
- 不接入广告网络
- 不接入分析平台(无 Google Analytics / Firebase / Mixpanel / 友盟 / 神策 / TalkingData / Sentry / 自建埋点)
- 不读取通讯录、相册、位置、麦克风、摄像头
- 不要求登录账号,不绑定手机号/邮箱
- 不在后台静默上传任何信息
网络通信
本 App 仅在以下情况发起网络连接,且完全是你主动触发的:
- SSH 连接 — 你点击服务器卡片连接时,App 通过 SSH 协议(基于 Citadel + SwiftNIO SSH)直接连到你配置的目标主机。连接细节仅在你的设备与目标服务器之间传输,Open Terminal 的开发者无法看到。
- TCP 探测 — 你在服务器列表点 "刷新"、或在编辑页点 "测试 TCP 连接" 时,App 用
Network.framework 向目标主机做一次 TCP 三次握手,不发送任何 SSH 凭证。
除上述两种你主动触发的连接外,App 不与任何其他服务器通信。
数据导出与备份
设置 → 数据 → "导出备份" 会生成 JSON,仅包含服务器列表元数据和偏好设置。不包含密码,Keychain 不会被导出。
数据删除
- 单条删除:服务器卡片 "⋯" 菜单或编辑页底部删除,服务器配置 + Keychain 密码会被同步永久删除。
- 全部清除:从 iOS 主屏幕长按图标 → 删除 App。系统会清除沙盒(包括
UserDefaults、Keychain 项),无残留。
English Version
Open Terminal collects no data, transmits nothing to remote services, and shares nothing with third parties.
All server profiles, passwords, command history, logs, and preferences are stored exclusively on your own device.
There is no backend server, no cloud sync, and no embedded analytics, tracking, or advertising SDK of any kind.
What we store and where
| Data | Purpose | Location |
| Server profiles (name, host, port, username, tags, notes) | Display & SSH connection | Device-local UserDefaults |
| SSH passwords | Authentication on connect | Device Keychain (system-encrypted, app-private) |
| Terminal session output | Live display | In-memory only — wiped on disconnect |
| Command input history | Up/Down recall | In-memory only — session-scoped |
| Saved commands | One-tap send | Device-local UserDefaults |
| Connection log | Troubleshooting | Device-local UserDefaults — clearable anytime |
| Preferences | Personalization | Device-local UserDefaults |
What we do not do
- No upload of any data to any remote server
- No ad networks
- No analytics SDKs (no Google Analytics / Firebase / Mixpanel / Sentry / custom telemetry)
- No access to Contacts, Photos, Location, Microphone, or Camera
- No account sign-up, no phone, no email
- No background silent uploads
Network traffic
The app initiates network traffic only in the following cases, all explicitly triggered by you:
- SSH connection — When you tap a server, the app dials the host you configured over SSH (Citadel + SwiftNIO SSH). Traffic travels directly between your device and your server.
- TCP probe — "Refresh" / "Test TCP" performs a single handshake via
Network.framework. No SSH credentials are sent.
Export & backup
Settings → Data → "Export backup" produces JSON containing only server metadata and preferences. Passwords are never exported.
Data deletion
- Per-server: "⋯" menu on a server card or edit screen → Delete. Profile + Keychain password are removed atomically.
- Complete wipe: Long-press app icon → Delete App. iOS removes the entire app container, including Keychain entries.
Technical Statement
For App Store reviewers and security-conscious users:
- Source: Built from public, auditable source. SSH transport uses Apple SwiftNIO SSH (Apache 2.0) via Citadel (MIT).
- Permissions declared in Info.plist: only standard
NSAppTransportSecurity defaults — no special hardware/location/contacts entitlements.
- Keychain access: service ID
com.openterminal.ssh — entries protected with kSecAttrAccessibleAfterFirstUnlock, never synced to iCloud Keychain by default.
- No third-party SDK at runtime: dependency graph limited to Apple SwiftNIO / Swift Crypto / Swift ASN.1 / Swift Atomics / Swift Collections / Swift Log / Swift System / BigInt / Citadel — all open-source, none with telemetry.