什么是SSH最长的密码?

什么是SSH密码最长(多less字符)?

我喜欢长而密的密码,但不知道字符的限制。

谢谢。

没有固定的最大长度。 你的密码没有被存储,你的密码的“salted hash”被存储在/ etc / shadow文件中,通常是一个特定的长度。 即使你的密码是50个以上的字符,密码的哈希表示也会小得多。

通过一切手段使用强密码,但密码的易用性和难忘的 – 如果你使它太长,你可能最终需要写下来,这可能是一个更大的安全问题,而不是一个较短的密码。

在这个问题和答案中,有几件事情正在被混淆。 我们来分析一下。

SSH对密码长度没有任何限制。 事实上,SSH并不知道你的密码。 它有几种身份validation模式,包括密钥(例如其他地方提到的RSA)和键盘交互 ,这就是您可以使用密码的方式。 在键盘交互模式下,只需将密码传递给后端。

通常对于类Unix服务器,该后端是可插入的身份validation模块或PAM。 这并不总是,但例外是不寻常的。

PAM,反过来,支持多个后端validation您的密码。 一个人一直在讨论 – /etc/shadow – 是pam_unix后端的一部分。 Pam_unix检查您在键盘交互模式下input的身份validation令牌是否与/ etc / shadow文件中的散列密码相对应。 严格地说,这里的密码长度没有限制,但是对于密码有多长意义是有限制的。 这取决于正在使用的散列。

正如所说的,传统的Unix DESencryption只关注密码的8个字母(56位)。 您可以使用更长的密码,但前8个字符以外的所有内容都将被丢弃。 (我从来没有听说过,正如别人所说,MD5哈希只使用8个字符,我不认为这是真的。如果这样的约束是在PAM工具的某处实现,而不是哈希本身。

也就是说,散列的位长度决定了两个密码之间可能的冲突空间,因此确定密码有多长时间才更有意义。 MD5是128位; SHA1是160; SHA256是256等

所以对于pam_unix:

  1. 密码长度没有物理限制。
  2. …尽pipe某些使用密码的工具可能会限制缓冲区大小并截断或崩溃。
  3. 只有DES将密码的有用长度限制为8个7位ASCII符号。
  4. 其他任何东西都允许无限的密码长度

可是等等! Pam_unix不是唯一的后端!

许多服务器(特别是在企业环境中)使用LDAP或Active Directory后端进行身份validation。 这些原则上可以有自己的密码长度限制 – 但这不是一个SSH属性,这是一个目录服务属性。 您需要向社区咨询这些服务。 但是,实际上,我不指望您会遇到任何通用LDAP或AD部署的密码长度限制。 如果你这样做的话,那几乎可以肯定是一个弱点或者妥协的基础设施

因此,尽量使用密码input自我 – 尽pipe我已经使用了多达75个字符,但build议使用最less16个字符(取决于我所保护的内容),然后设置RSA身份validation,因此您不必input许多。

如果密码存储为DES或MD5,则只有前8个字符是重要的。 SHA密码没有这样的限制。 有关详细信息,请参阅crypt(3)手册页。

https://tools.ietf.org/html/rfc4253 – SSH是一种与远程terminal通信的安全协议,不使用密码(它使用密码密钥协商)。 也就是说,一旦你连接到远程terminal,你通常会看到“一天的消息”(MOTD),并被要求提供login凭证,其规则由远程terminal的操作系统决定。 (溢出名称或密码字段的字符缓冲区是一个反复出现的安全漏洞)stream行的限制是长度为8,32和255个字符。