- 我是 Linux 新手。我计划一般使用 OpenSSH
- 我花了好几个小时,但似乎无法很快找到答案
- 我曾简要阅读过一些关于 IETF 的文章,但说实话,它太过深入,我迷失在了文本中
- 我在这个网站上搜索了以下内容,但没有很快找到答案:SSH RSA 错误、openssh 协议 2、SSH2 身份验证,还有其他我忘记的
- 我已经搜索过这个地点其中表明 SSH2 仅使用 DSA(本网站)。它还说 SSH2 仅使用主机密钥;而 SSH1 使用服务器和主机密钥;这让我有点困惑
- 这ubuntu 页面认为 DSA 不太安全,建议使用 RSA;没有提到 SSH2
- openbsdsshd_config 的手册页(openssh 的网站链接到)在 HostKey 下显示 RSA1 仅适用于 SSH1;但是 RSA、dsa 或 ecdsa 适用于 SSH2
- 整理完这个问题后,我相信 SSH2 可能是由 SSH Communications Security 专门为他们实现安全外壳协议 2 而创造的。如上所述,当我谈到 SSH 时,我计划只使用 OpenSSH
如何辨别现有密钥的密码
我在“OpenSSH_5.5p1 Debian-4ubuntu6, OpenSSL 0.9.8o 01 Jun 2010”中用默认选项(未输入任何参数)创建了一个工作密钥。我可以从很多方面(文件名、.pub 密钥的第一行、私钥)判断出它是 RSA;我唯一可以确认位强度的地方(我认为它叫)当我创建它时,顶部的随机艺术显示 2048。我怎么知道它是 RSA1 还是 RSA2,还是常规 RSA
请纠正我,因为我想要最安全的方式来进行 ssh :)
答案1
总结:使用 2048 位 RSA 密钥。
除非您使用的是古老的 SSH 客户端或服务器,否则您将使用协议版本 2。
虽然 DSA 和 RSA 算法在强度方面相当,但 SSH 使用时 DSA 密钥可能只有 1024 位,而 RSA 密钥则不受限制。以当今的计算能力来看,1024 位密钥已经变得不安全,因此您需要至少 2048 位,也就是 RSA。(RSA 也曾存在专利问题,导致人们推荐使用 DSA,但现在情况已不再如此。)
几乎所有服务器都会接受 DSA 和 RSA 密钥。(某些特定密钥由于以下原因被列入黑名单:Debian 错误,但没有任何不允许的密码。)ECDSA 是新热点,但并非所有服务器都支持它,因此它尚未广泛使用。一旦这种情况发生变化,ECDSA 可能将成为主流。
通常,您可以通过文件名来判断密钥的类型,文件名通常是id_dsa
、id_rsa
或id_ecdsa
。该file
命令还可以检查包含的内容以确定类型:
% file id_rsa
id_rsa: PEM RSA private key
要确定密钥长度,您可以使用以下openssl
命令:
% openssl rsa -in id_rsa -noout -text | head -n1
Enter pass phrase for id_rsa:
Private-Key: (4096 bit)
% openssl dsa -in id_dsa -noout -text | head -n1
read DSA key
Private-Key: (1024 bit)
答案2
除非你担心被拥有 NSA 资源的人窃听,否则这并不重要。是的,某些算法或密钥长度存在理论上的漏洞,可能会被利用,但实际上它们不太可能被利用将要除非您隐藏了极其有价值的数据,否则这些漏洞很可能就会被利用,而且无论如何,作为一名“Linux 新手”,您几乎肯定会遇到比这更严重的安全漏洞。