我见过有人建议使用这样的代码块:
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/