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

标签 ruby security net-ssh

我见过有人建议使用这样的代码块:

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

正如异常类型所示,它适用于主机 key 不匹配的情况,据我所知,它将主机添加到已知主机。

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

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

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

最佳答案

是的,你说得对!示例代码只是绕过了错误。

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

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

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

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

关于ruby - 使用 net-ssh ruby​​ gem 获取 HostKeyMismatch 异常时,使用 "remember_host!"是否存在安全风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63397586/

相关文章:

security - 常用的 PKCS 标准 : PKCS#7, PKCS#10 和 PKCS#12 有什么用?

ruby - 通过 Ruby Net-SSH 执行密码更改

ruby - Net-ssh session 超时

ruby - 如何处理 ruby​​ 中的 URL 以提取组件部分(方案、用户名、密码、主机等)?

ruby - 在 Rails 之外的 HAML 中渲染 HAML 部分

ruby - 我可以使用 Hpricot 查找任何/大多数网站的主要文章文本吗?

ruby - 在 Watir 中出现超时错误后重试测试站点

css - SCSS 的 Nanoc 过滤器

html - 如何在 rails 3 中安全地显示包含所有 html/css 的用户文本

c# - 如何从代码中设置 RSAProtectedConfigurationProvider 的 key 大小