IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

为什么要用公钥/私钥而不是密码去做SSH身份验证

车东[Blog^2] 2010-08-02 10:07:45 累计浏览 5,778 次
本机暂存

    SSH提供了很多种不同的身份验证,其中最常用的两种便是密码验证和基于公钥/私钥的身份验证。

    基于公钥/私钥的身份验证有非常多的优点。

    首先,公钥/私钥可以从根本上挫败监听来截取验证信息的企图。

    公钥/私钥验证本质上是一种 零知识证明。即,在身份验证的过程中,服务器并不需要知道用户的私钥是什么。【注:公钥/私钥验证并不是零知识证明,感谢 snnn 指正。】

    公钥/私钥验证在身份验证的过程中,服务器只需要知道用户的公钥,而用户则使用自己的私钥对一组数据签名,并在服务器端进行验证。服务器并不需要知道用户的私钥。目前为止,还没有有效的方法能从这些信息推导出私钥。

    与密码相比,这种方法有显著的优点:在验证身份的那一方,没有任何办法可以拿到用户的私钥,即使获得了那台机器的root权限。验证信息只能使用一次----这意味着,也没有办法把这个验证信息用于在其他地方再次验证身份。

    其次,公钥/私钥要比密码长的多,因而可以挫败通过穷举的方式破解的可能性。

    典型的密码是8位字符,假设可以使用大小写字母、数字和特殊符号,可选的范围无非是96^8而已,我们不妨算它128^8。典型的私钥有2048个bit,如果按7个来分组的话,有128^(2048/7)。当然,最高位和最低位一定是1,但向下取整,也有128^292种。

    最后,除了吃点带宽之外,SSH口令穷举对于仅采用公钥/私钥验证的服务器安全不构成任何威胁。

    通过适当的配置sshd,可以让其直接明确地告诉对方此处不支持口令验证,并且能够容易地将攻击者记录在案,并将数据反馈给防火墙来减少带宽的占用。

同分类推荐文章

  1. 绿盟科技《APT组织研究年鉴》(2026 版)正式发布 (2026-06-16 20:21:10)
  2. 【已复现】Linux内核Fragnesia权限提升漏洞(CVE-2026-46300) (2026-06-15 10:53:58)
  3. 企业文档安全最佳实践(二):给文档上“身份证”——手动标密与智能自动标密 (2026-06-12 17:18:33)

查看更多 安全 文章 →

建议继续学习

  1. 微信扫码登录网页实现原理 (累计阅读 17,424)
  2. 高效Linux用户需要了解的命令行技能 (累计阅读 12,797)
  3. linux 建立两台机器的信任关系 (累计阅读 11,461)
  4. sshd+chrome+switchsharp翻墙 (累计阅读 8,755)
  5. Linux shell脚本使用while循环执行ssh的注意事项 (累计阅读 8,162)
  6. Mac下使用SecureCRT的一些记录 (累计阅读 7,849)
  7. SecureCRT for Mac OS X 6.7.3破解方法 (累计阅读 6,790)
  8. 微信二维码登录的原理 (累计阅读 6,763)
  9. 在ssh服务里使用chroot (累计阅读 5,939)
  10. 如何让ssh登录更加安全 (累计阅读 5,697)