本网站使用 Kohei Koyanagi 开发的软件自动翻译为多种语言。为确保准确,请参考原始 英文 版本。

为什么 Splync 使用 SSH —— 安全服务器背后的无形钥匙

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 保护了传输中的数据。但一旦数据进入数据库,我们如何保证其安全?这就是哈希和加密的作用所在——最终的防护层。