使用 net-ssh ruby gem 获取 HostKeyMismatch 异常时,使用 "remember_host!" 是否存在任何安全风险?

Are there any security risks to using "remember_host!" when getting a HostKeyMismatch exception using net-ssh ruby gem?

我看到有人建议使用这样的代码块:

begin
 Net::SSH::start
rescue Net::SSH::HostKeyError => e
  e.remember_host!
  retry
end 

正如异常类型所暗示的那样,它适用于主机密钥不匹配的情况,据我所知,它会将主机添加到已知主机中。

所以我的问题是,每当无法识别主机时就无条件添加主机是否有风险?我想主机需要被识别以避免中间人攻击或类似攻击,并且立即添加任何无法识别的主机似乎是一个安全漏洞。

请记住,我是 Ruby 的新手,对 SSH 或一般安全性知之甚少,因此我希望得到简单的解释。这是我的第一个堆栈溢出问题,所以如果我违反了任何准则,我深表歉意。我想问这个作为对实际使用该代码块的问题的评论,但我没有足够的声誉。

我期待任何解释并提前致谢。

这是个好问题。

任何更改用户级别设置的图书馆都存在某种形式的风险。很多软件都依赖于类似的功能,请记住,存储主机确实会影响其他应用程序,而不仅仅是存在这种逻辑的应用程序。意见:存储这些信息并不是非常危险,但这是我想到的缺点之一是攻击者可以使用连接主机的历史来了​​解用户经常访问的基础设施。

是的,你完全正确!示例代码简单地绕过了错误。

如果您不关心哪些主机尝试连接,这没关系,这并不意味着 SSH 本身不安全。

有时,一个组织会添加一个单独的访问层以提高安全性,可能是一个连接到机器的 VPN,然后通过 SSH 连接到目标服务器...在这种情况下,您希望在 Net::SSH::HostKeyError 上失败

但如果您不那么担心,可以对错误使用 #remember_host! 来绕过引发的错误。

在另一个堆栈交换站点中查看此答案:https://security.stackexchange.com/a/154878