为什么公钥认证是自动脚本的首选?

时间:2010-03-25 18:25:17

标签: security authentication ssh

我在Net::OpenSSH的文档中找到了以下声明:

  

请注意使用密码   自动脚本中的身份验证是   一个非常糟糕的主意。如果可能,你   应该使用公钥认证   代替。

在自动脚本中使用密码验证有什么缺陷?

3 个答案:

答案 0 :(得分:3)

密码比私钥更容易猜测/暴力(除非你运行Debian;)

想象一下,您拥有一个运行120种不同自动脚本的用户帐户。如果您将密码硬编码到每个密码中,那么现在有120个地方可以更改密码。

如果您将密码放入配置文件中,并且所有120个脚本迟早都会从文件中读取它,那么有人会不小心使该文件具有可读性。当私钥不是600时,ssh将不起作用。

有人可以决定更改用户密码而不考虑在某些脚本中硬编码的可能性。在更改私钥之前,您更有可能停下来思考。

答案 1 :(得分:1)

可能因为使用密码身份验证,您必须将密码本身硬编码到脚本中或至少编码到某种配置文件中。 我认为硬编码你的普通ssh密码永远不是一个好主意:)

答案 2 :(得分:1)

对于任何远程资源,始终应首选公钥认证。统计上无法猜测挑战响应并且可以阻止MITM攻击。虽然这并不排除攻击者非常幸运的可能性。

如果攻击者可以读取远程系统上的文件,则密码或私钥必须是纯文本,并且可以读取。非对称密码术不是解决所有问题的魔杖。

文档中此警告的一种可能性是,如果您使用密码并且脚本未检查sshd的公钥,则MITM攻击可以获取明文密码。您应该通过硬编码公钥来检查远程服务器身份验证。 cli上的ssh命令会自动执行此操作,并在服务器密钥更改时发出警告。如果您没有检查远程服务器的身份验证凭据并且您正在使用公钥身份验证,那么攻击者只能MITM该会话,因为攻击者将无法获取客户端的私钥来重新授权。