Apex Terminal

留在你裝置上的東西

這一頁是摘要。具效力的文本是應用程式內的《隱私權政策》,位於「設定」中,與《使用條款》《使用者須知》放在一起——那幾份才是生效的文件,而且是隨你正在使用的這個版本一起發布的。同一份《隱私權政策》在本頁末尾原文完整轉載。

簡短版本

Apex Terminal 不蒐集任何關於你的資料。沒有帳號要註冊,沒有我們營運的後端,也不蒐集任何使用資料。這不是一句關於意圖的承諾,而是一件關於這個版本的事實,而且可以自己去查證。

Apex Terminal 自己沒有伺服器。你的資料只會去你讓它去的地方。

應用程式裡沒有的東西

沒有分析工具,沒有遙測,沒有當機回報程式,沒有廣告識別碼,也沒有任何這一類的第三方 SDK。沒有註冊流程。沒有 App 內購買,沒有訂閱。

這些都是「不存在」,而「不存在」沒辦法用測試證明——它可以用一次任何人幾秒鐘就能重做一遍的搜尋來證明,而這比一句承諾更值得相信。這個應用程式完整的相依清單是:swift-nio、swift-nio-ssl、swift-crypto、swift-sodium,以及一個內建的 swift-nio-ssh 分支。沒有別的。追蹤程式沒有地方可以藏。

應用程式隨附的隱私權清單裡,蒐集的資料類型為空、追蹤為否——這也是 App Store 隱私標籤上寫著「未蒐集資料」的原因。

存了什麼,存在哪裡

私密金鑰在 iOS 鑰匙圈裡,並標記為無法移到其他裝置;或是在 Secure Enclave 裡,私密金鑰從不存在於晶片之外。兩者都不會被應用程式顯示出來,也不會被傳送。伺服器看到的是簽章,不是金鑰。

連線、已知的主機金鑰、受信任的憑證授權單位與指令片段存在應用程式自己的儲存空間裡,裝置鎖定時加密。

密碼——伺服器的與遠端螢幕的——存在鑰匙圈裡,裝置解鎖時可讀取。

終端機回捲緩衝區只存在於記憶體,從不寫入磁碟。工作階段或應用程式結束,它就消失。

指令歷史預設不記錄,要由你自己開啟。關掉它,已儲存的檔案當下就刪除。

你對伺服器提問的回答——一次性驗證碼、權杖、密碼過期提示——只在回答伺服器的那一刻保存於記憶體,之後哪裡都不存。

什麼會離開這台裝置

流量前往你連線的那些伺服器:SSH 流量,在你的裝置與你的伺服器之間端對端加密。你的使用者名稱、你金鑰的簽章或密碼、你輸入的內容,以及回來的內容。你的伺服器會保留它自己的登入記錄——任何伺服器都是如此。

連接埠轉發在一個監聽端與一個由你指定的目的地之間搬運位元組,經過轉發的內容不會被檢查、記錄或儲存。

如果你啟用了某個需要你自己設定服務提供者的選用功能,它只與你設定的那一方通訊,除此之外沒有別處;在你設定好之前,它什麼也不做。每一種情形,應用程式內的《隱私權政策》都寫清楚了——在開啟任何東西之前,那份文件是該讀的。

沒有任何東西送到開發者這裡。沒有開發者伺服器,沒有分析服務,也沒有可以送過去的追蹤網域。

和任何 SSH 用戶端一樣,你所在網路的營運方看得到你的裝置連了哪些主機名稱。連線的內容是加密的。

關於同步

這個版本把所有東西都存在你設定它的那一台裝置上。沒有跨裝置同步,應用程式在你會去找它的地方也是這麼寫的。要把一套設定帶到另一台裝置,請匯出一個以密碼封裝的備份,在那邊還原。

Face ID 與 Touch ID

完全由 iOS 處理。應用程式永遠看不到你的臉部或指紋資料,它只知道系統的檢查有沒有通過。以這種方式保護的金鑰,一旦裝置上註冊了新的臉孔或手指就會失效——所以知道你裝置密碼的人,沒辦法把自己加進去然後使用你的金鑰。

如果這裡寫錯了

如果這一頁寫的和應用程式實際做的對不上,那是應用程式錯了,我們希望知道。請見支援頁面。

聯絡方式

對這份政策,或是對應用程式存了什麼有疑問,請寄到 [email protected]。中文或英文都可以,用你順手的那一種。


《隱私權政策》全文

以下是隨應用程式一同發布的《隱私權政策》,在此原文完整轉載,未作改動。

生效日期: 2026年9月9日

Apex Terminal 不收集任何關於您的資料。開發者不營運任何伺服器,因此資料無處可去。本頁具體說明本應用程式儲存哪些內容、儲存於何處,以及哪些內容會離開您的裝置,因為「我們重視您的隱私」並不是任何人能夠查證的說法。

簡短版本

  • 您的金鑰、密碼與連線留在您的裝置上,存於 Apple 的 Keychain 與本應用程式自身受保護的儲存空間中。
  • 唯一的網路流量是傳送至您所連線的伺服器,以及(就經隧道連線的主機而言)代表您傳送至 Cloudflare。
  • 沒有其他任何存放處。本版本不提供 iCloud 同步,因此本裝置就是唯一的副本。
  • Spotlight 預設關閉,需由您開啟;接力只攜帶某個工作階段屬於哪一條連線,不攜帶其他內容。
  • 沒有分析工具、沒有當機回報程式、沒有遙測、沒有廣告、沒有帳號。

本應用程式在您的裝置上儲存的內容

資料位置保護方式是否離開裝置?
連線清單(名稱、主機名稱、使用者名稱、連接埠、跳板主機、連接埠轉發)應用程式儲存空間裝置鎖定時加密否
SSH 私密金鑰Keychain僅在裝置解鎖時可讀取;可選擇額外以 Face ID 或 Touch ID 鎖定絕不傳送至伺服器;伺服器看到的是簽章,而非金鑰
在 Secure Enclave 中產生的 SSH 金鑰位於 Secure Enclave 內部;本應用程式只保存對它的參照私密金鑰從不存在於晶片之外,任何軟體(包括本應用程式)都無法讀取;可設定為每次簽章都需要 Face ID 或 Touch ID絕不。即使透過備份也無法離開本裝置
金鑰的 OpenSSH 憑證應用程式儲存空間裝置鎖定時加密會出示給信任簽發機構的伺服器——憑證本就是為此而存在
SSH 密碼Keychain僅在裝置解鎖時可讀取傳送至您正在登入的伺服器。不同步
Cloudflare Access 權杖Keychain裝置自重新開機後解鎖過一次即可讀取,以便裝置放在口袋中時也能重新連線僅回傳給 Cloudflare,作為您自身連線的憑據。不同步
Cloudflare Access 服務權杖(僅當您為某個連線輸入時)Keychain僅在裝置解鎖時可讀取僅傳送至 Cloudflare,作為該連線的憑證。不同步;隨連線一併刪除
已知的 host key 與受信任的憑證授權單位應用程式儲存空間鎖定時加密;排除於裝置備份之外否
指令片段應用程式儲存空間鎖定時加密;包含於裝置備份中否
設定應用程式偏好設定標準應用程式儲存空間否
最近開啟的工作階段清單應用程式儲存空間連線名稱與時間,最多保留七天;鎖定時加密;排除於備份之外否
終端機回捲緩衝區僅存於記憶體工作階段或本應用程式結束時即消失。絕不寫入磁碟否
指令歷史除非您開啟,否則不記錄。 開啟後:應用程式儲存空間,鎖定時加密,排除於備份之外,最近 500 筆指令否。關閉的當下即刪除
對伺服器所提問題的回答(一次性驗證碼、權杖、密碼過期提示)不儲存僅在回答伺服器的那一刻保存於記憶體中僅傳送至該伺服器。絕不儲存、絕不寫入記錄、絕不再次提供
VNC 密碼Keychain僅在裝置解鎖時可讀取傳送至您正在開啟的那個畫面
助理的 API 金鑰(僅在您設定了提供者時)Keychain僅在裝置解鎖時可讀取作為請求憑據傳送至您所選擇的提供者

每個 Keychain 項目都標記為僅限本裝置。它無法經由 iCloud Keychain 傳輸,也無法從備份還原至其他裝置。唯一能將內容移至另一台裝置的方式,是您自己匯出的備份檔案;包含私密金鑰的備份會以您輸入的密碼加密,而該密碼不會儲存於任何地方。

Face ID 與 Touch ID 完全由 iOS 處理。本應用程式絕不會看到您的臉部或指紋資料;它只會得知系統的檢查是否通過。以此方式保護的金鑰,在裝置上註冊新的臉孔或手指後即無法使用,因此得知您裝置密碼的人無法將自己加入並讀取該金鑰。

離開您裝置的內容

只存在三種網路流量,且三者皆由您選擇。

1. 傳送至您所連線的伺服器。 SSH 流量,在您的裝置與伺服器之間端對端加密:您的使用者名稱、您金鑰的簽章或您的密碼、您輸入的內容,以及伺服器回傳的內容。當連線經由 Cloudflare Tunnel 傳輸時,Cloudflare 會轉送加密的 SSH 位元組,但無法讀取;host key 驗證保護您免受隧道本身的威脅。伺服器會保留自己的登入紀錄,如同任何伺服器一樣。

2. 傳送至 Cloudflare,針對您標記為經隧道連線的主機。 本應用程式會詢問主機由哪個 Access 應用程式保護、取得 Cloudflare 的簽署金鑰、在系統瀏覽器中開啟登入頁面、收取產生的權杖,並在開啟隧道時將該權杖出示給 Cloudflare。您的登入本身在瀏覽器中進行,與 Cloudflare 及您的身分提供者互動;本應用程式絕不會看到您在該處輸入的密碼。所有這些都傳送至 Cloudflare 自己的端點,如同您使用 Cloudflare 自家工具時一樣。Cloudflare 對此記錄哪些內容,受 Cloudflare 的隱私權政策及您與其之間的合約規範。

3. 傳送至您為助理設定的提供者,且僅在您向它提問時。 請見下文「助理」。在您填入提供者之前,並不存在這樣的提供者。

另有兩項功能承載的是他人的流量,而非本應用程式自身的流量,本應用程式不讀取其中任何內容:

  • 連接埠轉發 在監聽端與您指定的目的端之間傳遞位元組。經過轉發的內容不會被檢查、記錄或儲存。
  • 代理轉發 在您為某條連線開啟後,允許該伺服器上的程式請求本裝置以這條連線所使用的金鑰對挑戰值進行簽章。傳送出去的是簽章,而非金鑰,且僅在該工作階段開啟期間有效。

沒有任何內容傳送給開發者。沒有開發者的伺服器、沒有分析 SDK、沒有當機回報程式,也沒有追蹤網域。本應用程式在 App Store 的隱私權標籤標示「未收集資料」,因為這是事實。

如同任何 SSH 用戶端,您所在網路的營運者可以看見您的裝置連線至哪些主機名稱。連線的內容則是加密的。

iCloud 同步

本版本沒有 iCloud 同步。 設定中仍會顯示該開關,處於停用狀態,並在旁邊說明原因——想找同步的人應當被告知它的現況,而不是茫然猜測。本應用程式持有的任何內容都不會上傳至 iCloud:連線清單、金鑰、host key、指令片段、設定,一概沒有。

這表示本裝置就是唯一的副本。要移轉到新裝置,請在 設定 → 備份 中匯出備份並於新裝置上還原;包含私密金鑰的備份會以您輸入的密碼加密,而該密碼不會儲存於任何地方,因此密碼遺失即等同備份遺失。

若未來版本提供同步,它在您開啟之前都是關閉的,並且本政策會在它承載任何內容之前,先準確說明它承載什麼。

「檔案」App 中的檔案

被您以「在『檔案』App 中顯示」標記過的連線,會透過 File Provider 擴充功能發布至「檔案」App,於是其他 App 可以開啟該伺服器上的文件。該擴充功能獨立於本應用程式執行,並以相同方式進行身分驗證——從同一個 Keychain 存取群組讀取相同的憑據;它不持有任何第二份副本,也無法存取您未標記過的伺服器。檔案內容在伺服器與請求它的 App 之間傳遞;除 iOS 自身為「檔案」App 管理的快取之外,不保留任何內容。

連線重複使用

當您在一台已連線的伺服器上再開啟一樣東西時,若各項條件完全一致,本應用程式會重複使用已開啟的那條連線:相同的主機與連接埠、相同的使用者、相同的金鑰或密碼、相同的跳板主機、相同的隧道,以及相同的代理轉發設定。這表示一次身分驗證,而不是多次。它絕不會將兩個不同的身分合併:上述任何一項有所不同,就會建立一條獨立的連線,因為以另一個身分驗證過的連線並不是同一條連線。重複使用不會產生任何新的儲存內容。

Spotlight 與接力

系統可能將內容帶出本應用程式的兩條途徑。之所以在此說明,是因為「沒有任何內容離開裝置」必須名副其實。

Spotlight 預設關閉,需由您開啟。 開啟後,本應用程式會將每條已儲存連線的名稱與位址——也就是連線清單上顯示的那兩行——交給本裝置的搜尋索引,使其可從主畫面搜尋到。除此之外不索引任何內容:沒有密碼、沒有金鑰、沒有 host key、沒有指令歷史。索引位於裝置本機,但不必開啟本應用程式即可讀取,這正是該開關存在的原因,也是它預設關閉的原因。關閉它會移除已索引的內容。

接力只攜帶「是哪一條連線」,不攜帶其他。 當某個工作階段顯示在畫面上時,本應用程式會發布一則活動,說明它是哪一條已儲存的連線,以便您的另一台裝置提議在那邊繼續。SSH 工作階段無法搬移——連線及其金鑰都在本裝置上——因此「繼續」意味著向同一台伺服器開啟一個新的工作階段。該活動只包含一個識別碼與一個名稱;它絕不包含主機名稱、使用者名稱、密碼或金鑰。iOS 會將它通告給登入相同 Apple 帳號的裝置,這是 Apple 的機制,詳見 Apple 的隱私權政策。

來自應用程式之外的連結

連結——ssh:// 或 apexterminal://——可以請求本應用程式開啟某條連線或執行某道指令。任何連結都不自帶權限:若連結指向本裝置未儲存的伺服器,或連結攜帶了任何指令,都會先向您展示,明確列出伺服器與要執行的指令,在您允許之前不會發生任何事。連結絕不能向您的清單中新增連線;它只能把欄位填好,是否儲存由您決定。

指令歷史

預設關閉。若您開啟,本應用程式會記錄您最近輸入的 500 筆指令,僅存於本裝置,裝置鎖定時加密,並排除於備份之外。它不會過濾機密資訊:在指令列輸入的密碼會被原樣記錄,如同您 shell 自身的歷史記錄一樣。本應用程式不嘗試過濾這些內容,因為一個大致有效的過濾器會獲得超出其應得的信任。關閉歷史即刪除該檔案。之後再次開啟會從零開始。

診斷資料

在「設定」中可匯出診斷資訊,以協助處理支援問題。報告不包含任何指令、終端機輸出、密碼、金鑰或權杖,也不包含完整的主機名稱。主機名稱在每行記錄寫入的當下即以簡短的單向摘要取代,只保留名稱的最後兩段(bastion.corp.example.com 會變成 <host:…>.example.com;IP 位址會變成 <ip>),權杖則以其長度與摘要取代,因此匯出內容是所記錄內容的副本,而非可能有所遺漏的事後清理。報告只會顯示在螢幕上,除非您選擇分享,否則不會儲存在任何地方。是否分享、與誰分享由您決定;本應用程式不會將其傳送至任何地方。若您將報告寄給開發者,其僅在回答您問題所需的期間內保留。

開發者收到的內容

本應用程式不傳送任何內容。Apple 可能向開發者顯示彙總的 App Store 統計資料,以及(若您在裝置的「分析」設定中選擇了「與 App 開發者分享」)iOS 所收集的當機記錄。這是 Apple 的機制,載於 Apple 的隱私權政策中;本應用程式並未在其上增添任何內容,也不包含自己的當機回報程式。

助理

助理回答有關指令與終端機輸出的問題。在支援 Apple Intelligence 的裝置上,它在裝置本機執行,任何內容都不會離開裝置。若您在「設定」中設定了服務提供者,每次請求只會向該提供者傳送助理畫面事先顯示給您的內容:您的問題、伺服器平台、最後一個指令,以及您選擇納入的終端機文字。您的 API 金鑰保存在裝置鑰匙圈中,並在請求標頭中傳送給提供者。提供者如何處理請求,受其自身隱私權政策規範。本應用程式絕不會自行向任何地方傳送終端機文字。

螢幕共享

螢幕共享(VNC)會顯示遠端電腦的螢幕,並把您的觸控、按鍵和指標操作傳送給它。畫面只在顯示時存在,不會被儲存或傳送到別處。VNC 通訊協定本身不加密,其密碼驗證也很弱;除非您在連線設定中關閉該選項,否則畫面會經由 SSH 連線傳輸並受其加密保護。遠端電腦複製的文字會先提示您,經您確認後才會放入剪貼簿。VNC 密碼儲存在本裝置的鑰匙圈中,不會同步。

程式寫入剪貼簿

伺服器上的程式可以請求本應用程式將內容放到您的剪貼簿上——這正是 tmux 與 vim 用來讓 yank 抵達您這一端的跳脫序列。在您於 設定 → 安全性 中開啟之前,該請求會被拒絕;而反方向——程式讀取您的剪貼簿——無論該設定為何都會被拒絕:作出回應就等於把您最後複製的內容交給對端正在執行的任何程式。

程式繪製的圖片

伺服器上的程式可以在終端機裡繪製圖片——sixel、Kitty 圖形協定,或 iTerm2 的內嵌圖片。圖片在本裝置上解碼並繪製,僅在工作階段保有它期間存在,絕不會寫入檔案,也不會傳送到任何地方。其中兩種協定還定義了以檔案方式傳遞圖片的途徑:檔案路徑、暫存檔或共用記憶體。那些指的是執行該程式那台機器的檔案系統;本應用程式不會因伺服器的指示而讀寫您裝置上的檔案,因此會拒絕這些請求並明確說明。iTerm2 的 File= 若沒有 inline=1 亦同——那是請求把伺服器選定的檔案儲存到您的裝置上。

App 鎖定

開啟 App 鎖定後,App 在開啟時以及離開超過您選擇的時間後返回時,會要求輸入 App 自己的密碼——如果您允許,也可以使用 Face ID 或 Touch ID。密碼本身不會被儲存:裝置鑰匙圈中只保存加鹽的 PBKDF2 衍生值,且僅在本裝置上。Face ID 與 Touch ID 完全由 iOS 處理,App 只知道驗證是否通過。輸錯只會被延遲,絕不會刪除任何資料。

您對自身資料的權利

本應用程式持有的一切都在本裝置上,受您控制。開發者處沒有任何副本,因此開發者沒有任何內容可應要求提供、更正或刪除。要查看您的資料,請開啟本應用程式。要刪除資料,請見下文。由於開發者不會收到任何內容,因此沒有需要提出的請求,也沒有可以提出請求的地址;行使這些權利的操作就在本應用程式的「設定」中。

刪除一切

設定 → 刪除所有資料 會關閉每個開啟的工作階段,並自本裝置移除每一筆連線、SSH 金鑰、已儲存的密碼、Cloudflare Access 登入、指令片段、指令歷史項目、最近開啟的工作階段清單與每一把已知的 host key。存放於 Secure Enclave 中的金鑰會隨之銷毀。單一 host key 也可在 設定 → 已知主機 中移除。

刪除本應用程式 會將其檔案自裝置移除。iOS 不承諾在刪除應用程式時一併移除該應用程式的 Keychain 項目,因此若您也希望金鑰、密碼與權杖一併消失,請先執行「刪除所有資料」。

這兩項操作都不會變更您伺服器上或 Cloudflare 處的任何內容。要在該處撤銷存取權,請自伺服器的 authorized_keys 中移除公開金鑰,或在您的 Cloudflare Zero Trust 儀表板中撤銷工作階段。

App Store 隱私權標籤

收集的資料:無。追蹤:無。本應用程式的隱私權資訊清單宣告其使用的兩個須說明理由的 API(用於自身容器的檔案時間戳記,以及用於設定的標準偏好設定)、無收集的資料類型,亦無追蹤網域。

兒童

本應用程式是管理伺服器的工具,並依此在 App Store 上分級。它不收集任何人(不論年齡)的資料。

變更

新版本的政策會隨新版本的應用程式一同發布,並於頂端標註日期。若本應用程式日後開始將資料傳送至新的地方,會在發生之前(而非之後)以淺白文字在此說明。