繁体   English   中英

为什么自动脚本首选公用密钥身份验证?

[英]Why public key authentication is preferred for automated scripts?

我在Net :: OpenSSH的文档中发现了以下要求:

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

在自动脚本中使用密码身份验证有何缺陷?

密码比私钥更容易猜测/强行使用(除非您正在运行Debian;)

假设您有一个运行120个不同自动脚本的用户帐户。 如果您将密码硬编码到每个密码中,则现在有120个地方可以更改它。

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

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

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

对于任何远程资源,始终应该首选公钥身份验证。 从统计上讲,不可能猜出挑战响应并可能阻止MITM攻击。 尽管这并不排除攻击者非常幸运的可能性。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM