SSH 的實際功能
Splync 使用 HTTPS 來保護您的智能手機和我們伺服器之間的路徑,但我們仍需要保護伺服器本身以確保用戶數據的安全。應用程式開發者和系統管理員需要安全地進入伺服器以進行維護和更新,這時候 SSH(安全殼層協定)就派上用場。它是一種協定,允許授權用戶在不受信任的網絡上安全登錄遠端計算機。SSH 取代了舊有的不安全方法,如 Telnet,後者以純文字發送用戶名和密碼。
“鑰匙”的背後理念
SSH 不依賴傳統密碼,而是使用加密密鑰——成對的公鑰和私鑰。把它們想像成只適合彼此的鎖和鑰匙。公鑰存在伺服器上,私鑰則保留在用戶手中。連接時,伺服器要求您證明持有私鑰,而無需透露私鑰。這使得竊聽者幾乎不可能假冒您的身份。傳統密碼可能被猜測、洩漏或重用,而 SSH 密鑰是長而隨機的加密字符串,幾乎無法猜測。即使有人攔截了連接,他們看到的也只是加密後的噪音。而且,由於 SSH 密鑰從不在網絡上傳輸,因此無需擔心會在途中被竊。
SSH 密鑰的外觀
如果您從未見過 SSH 密鑰,可能會覺得它很抽象,但它其實就是一大塊編碼文字。公鑰通常有幾百個字符長,而私鑰則超過一千個字符。兩者都儲存為文本文件,但內容看起來像隨機噪音——由字母、數字和符號組成。公鑰可以安全分享,就像把鎖裝在伺服器上。而私鑰則是您獨特的數位身份,絕對不能分享。它儲存在您的電腦上,僅用來證明您的身份,而無需透露鑰匙本身。
公鑰與私鑰
公鑰就像您家附上的鎖,任何人都能從街上看到,就像您家門口的鎖。但僅僅看到鎖並不會告訴人們如何打開它。換句話說,任何人都能看到它,但只有正確的鑰匙可以打開。而私鑰就是開鎖的鑰匙,安全地保留在您身上。如果有人獲得了您的私鑰,他們就能像您一樣進入您的家。因此它必須始終保密。
SSH 機制
每一組公鑰和私鑰形成一對唯一的一對一關係。它們是通過數學過程生成的,只有特定的私鑰可以匹配對應的公鑰。可以把它們視為訂製的鎖和鑰匙——一起鍛造,世界上沒有其他鑰匙能配對這把鎖。即使您使用相同算法(如 RSA 或 Ed25519)生成另一對,內部的數字也會完全不同。連結兩者的數學過程是單向的:您可以輕鬆從私鑰推導出公鑰,但幾乎不可能反向推導出私鑰。因此,每對 SSH 密鑰都是獨特且安全的。
SSH 如何證明您的身份
當您使用 SSH 登錄伺服器時,您的私鑰絕不會離開您的電腦。相反,伺服器會發送一個隨機挑戰——像一次性謎題——只有您的私鑰才能解決。您的電腦會從數學上簽署該挑戰,生成一個伺服器可以使用您的公鑰檢驗的短答案。如果答案合適,伺服器就知道您持有正確的私鑰,而無需看到它。這是現代加密的神奇之處:您可以證明自己的身份而不透露秘密。SSH 驗證之所以有效,是因為您的私鑰包含推導公鑰的所有信息,但反向幾乎不可能。
開發者如何實際使用 SSH
每當開發者部署代碼、更新數據庫或重啟服務時,他們通常會通過 SSH 連接到遠程伺服器。通過身份驗證後,他們獲得了與伺服器的安全命令行連接。接下來,他們可以管理文件、重啟服務或查看日誌——一切都是端到端加密的。對 Splync 來說,SSH 是我們安全管理雲伺服器的方式。每一個管理操作——部署更新、檢查日誌、備份數據——都是通過 SSH 連接並由加密密鑰保護的。沒有人能在沒有正確私鑰的情況下訪問伺服器。即使有人知道我們的 IP 地址,沒有那把鑰匙,門就不會打開。
下一步:伺服器內部加密
SSH 保護伺服器入口,HTTPS 保護數據在傳輸中的安全。但數據一旦進入數據庫,我們如何保護它?這時候雜湊和加密就成為最後的防線。