什么是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:
可是等等! 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个字符。