为什么SSH密钥认证优于密码认证?


45

这不是技术性问题,而是概念性问题。我知道SSH密钥中使用的加密技术比常规密码要强大得多,但是我不明白为什么它被认为更安全。

我阅读的大多数教程都建议使用SSH密钥认证而不是密码认证。但是我的理解是,任何有权访问预先批准的客户端计算机的人都将能够连接到服务器,这意味着SSH密钥提供的安全级别仅与物理服务器的安全级别一样强。客户端计算机。

例如,如果我在手机上设置了SSH密钥以连接到家用计算机,如果我丢失了手机并且有人设法对其进行解锁,他们将能够连接到家用计算机。我知道我可以从家用计算机中取出手机的钥匙,但是在我发现客户端设备丢失/损坏之前,我一直很脆弱。

我是否误解了某些东西,或者是那些正当的担忧?


10
两者都做-需要密码的密钥。这样一来,您需要确定两件事,而不仅仅是一件事。您还可以很容易地使丢失的密钥失效,并拥有多个授权密钥以对其进行更多控制,依此类推。
Phoshi 2011年

2
这可能应该转移到安全性上。

10
@DKGasser:不,不应该。这是一个完全正确的问题。仅仅因为某些东西可以移动到另一个SE网站并不意味着应该这样
Wuffers

4
@DKGasser:可以去那个网站,那是一个完全正确的问题。但这也是一个有效的问题,因此没有理由进行迁移。如果此问题不在此处讨论,那么可以,可以将其迁移到此处。但这完全是本网站上的主题,因此不应该迁移。
Wuffers

3
并且不要忘记,SSH密钥永远不会通过网络。远程服务器从不获取密钥,而不是密码,该密钥不仅通过网络发送,而且还发送到远程服务器。考虑下一次您不确定使用什么密码,然后尝试一些可能在其他帐户上使用的密码!您向该服务器发送了什么密码???
9mjb 2014年

Answers:


40

如果您的SSH服务允许基于密码的身份验证,则僵尸网络将在白天和黑夜里敲打您的Internet连接的SSH服务器,以尝试猜测用户名和密码。僵尸网络不需要任何信息,它可以尝试使用流行的名称和流行的密码。有很多人叫约翰,密码是qwerty123。除此以外,这还会阻塞您的日志。

如果您的SSH服务仅允许公共密钥身份验证,则攻击者需要与服务器上存储的公共密钥相对应的私有密钥的副本。他们不仅可以进行随机攻击,还必须具有用户的先验知识,并且必须能够从SSH服务器的授权用户的PC上窃取私钥。

私钥通常受长密码保护的事实具有次要意义。

更新:

就像我指出的那样,正如评论所指出的那样,将您的SSH服务从端口22移到高编号的端口上会极大地改变日志中出现的未经授权的登录尝试次数。这是值得做的,但我确实将其视为一种模糊的安全性(一种错误的安全感)-僵尸网络迟早会实施缓慢的隐匿端口扫描,否则您将被故意作为目标。更好地准备。

我总是使用长密码短语来保护我的私钥,我猜想这在移动设备上尤其重要,因为移动设备更容易丢失或被盗。

另外,http://xkcd.com/538/

安全


7
+1除了公共密钥身份验证不会对您的日志被尝试连接的僵尸程序阻塞没有任何帮助。要停止此操作,请在高端口(即9876而不是22)上运行SSH服务器。当然,如果他们想打你,他们必须先端口扫描你,机器人一般不会浪费那么多的时间......有很多SSH服务器上的22
防爆Umbris

3
您不是在开玩笑的日志大小-我的/ var / log / secure从兆字节的登录尝试变为千字节(仅包含我的登录记录)。
约翰C

2
+1有趣,我已经使用基于密码的身份验证运行了..就像现在十年了..大声笑。他们可以移植吗?好信息,谢谢。
James T Snell

2
@ExUmbris而不是更改端口,您应该考虑使用fwknop:Single Packet Authorization和Port Knocking。这里的好处应该很明显:当您甚至不允许任何人看到该端口在任何地方都是开放的,除非通过SPA敲击使他们能够访问该端口时,他们甚至无法尝试使用nmap和利用它。这比通过默默无闻的简单安全性要好得多。
aculich 2012年

@aculich更改端口不是“默默无闻的安全性”。我正在做的是防止日志充满警告。但是,您有关于通过SPA 改善安全性的正确观点。
Ex Umbris

8

逻辑是SSH密钥的组合比密码多得多,因此很难猜测。使用SSH密钥还可以使您禁用密码身份验证,这意味着绕过Internet的大多数自动攻击将毫无用处。

关于物理安全性,保存密码与在设备上丢失或被盗时在设备上拥有未加密的SSH密钥之间没有区别。您拥有的唯一好处是,没有人输入密码,并且从理论上讲,您可以确保所有设备都具有不同的SSH证书,因此您只需为手机禁用一个即可。

我相信也可以使用密码保护SSH密钥。


但是,值得注意的是,可以检测到并防止针对sshd的暴力破解尝试(例如,通过fail2ban进行保护),而窃取了私钥的人可以在其计算机(或群集)允许的速度下尝试尝试输入密码。他们。这仍然不是一个很好的攻击方法,但是与合理的fail2ban策略相比,它们大大提高了赔率。
熊加米奥夫


1

键盘也可以通过“过肩”来监视密码。此外,在许多地方都使用类似的密码是一个弱点,尤其是当密码有时在安全性较低且具有潜在按键记录程序的计算机上使用时。

没错,如果计算机被盗,可以从硬盘上读取未加密的密钥-因此请使用密码对其进行加密。

如果您的计算机受到恶意软件的侵害,无论如何您都会被塞住。-有人可以获得加密密钥并记录您的密码。


1
注意:但是,如果要以编程方式(例如,在脚本中)使用密钥,则无法使用密码对密钥进行加密。
TheStoryCoder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.