交换系统服务器 ssh 密钥安全吗?

交换系统服务器 ssh 密钥安全吗?

与通过电子邮件交换 ftp/sftp 凭证相比,通过电子邮件交换系统 ssh 密钥是否更安全?如果一个人没有物理 ssh 私有文件,黑客是否仅通过了解公共 ssh 密钥字符串就能访问服务器?

答案1

公钥密码系统的意义在于,公钥可以广泛传播,而不会损害系统的安全性。因此,如果黑客能够拦截服务器的公钥,他们试图访问系统将不会获得任何好处。

答案2

正如 wombles 的回答中提到的,如果攻击者截获了密钥,您仍然是安全的。这就是非对称加密的目的。

如果攻击者不仅能够拦截密钥,还能操纵您的通信渠道,那么他就可以将其发送的公钥替换为其自己的密钥,从而访问您的系统。这通常称为身份验证问题。

如果您很偏执并且知道向您发送密钥的人的声音,您还应该在电话上验证密钥指纹,因为语音通信比电子邮件更难操纵。

答案3

是的,共享服务器的公钥是完全安全的,该公钥用于识别服务器和中间人保护。一旦您“接受”了公钥,您的客户端就会记住它,并在它发生变化时提醒您。(如果发生中间人攻击,它就会这样做。)

通常,人们可以更进一步,根据 rfc4255 在 DNS 中发布密钥的指纹: http://www.ietf.org/rfc/rfc4255.txt

这样,客户端就可以在实际连接到 ssh 守护进程以通过端口 22 接收公钥之前检索密钥的指纹。

如果指纹与服务器提供的公钥匹配,连接将继续。

以下是执行此项操作的一些基本说明。 https://simon.butcher.name/archives/2011/01/16/SSH-key-fingerprints-in-DNS

至于私钥,无论是由您还是您的客户生成,都应该绝对保密,并使用强密码存储。

一般来说,我建议使用 /etc/ssh/sshd_config 选项禁用 SSH 上的密码: PasswordAuthentication no

这将仅允许私钥列在 ~/.ssh/authorized_keys 中的客户端进行连接。是的,您仍然可以在 sudo/su 提示符下使用密码,但它不会允许您通过 SSH 使用用户名和密码登录。需要私钥。

如果您在想不出一个好的密码时遇到困难,我建议您访问 correcthorsebatterystaple dot net。

(是的,密码可以包含空格,像“Noble Sister Protection”这样的密码很容易记住,而且仍然具有足够的熵以提供足够的保护 - 请参阅 XKCD 漫画#936,标题为“密码强度”。)

当私钥与密码相关联时,客户端保存的 .ppk 或 id_rsa 文件将被加密。一般的想法是,您(服务器管理员)永远不会知道用于加密客户端密钥的密码/密码。一旦客户端解锁/解密密钥并将其作为数学问题呈现给您(服务器),身份验证将继续进行。根本无法从服务器恢复客户端的密码(除非他们愚蠢到上传他们的私钥 - 不要这样做!使用 SSH 代理转发,或 Windows 上的 putty 的 pageant.exe 密钥代理。)

相关内容