我有一台具有专用 IP 地址的服务器A
和一台具有动态 IP 地址的服务器B
(通过 no-ip.org 路由)。A 通过 sshpass 将备份上传到 B:
export SSHPASS=***
sshpass -e sftp **@** << !
[..]
put [..]
bye
!
每次在(A)发生以下情况:
警告:将 IP 地址“[...]”的 ECDSA 主机密钥永久添加到已知主机列表中。
我感觉这可能不是一种传输备份数据(tar 文件)的安全方法。有人有可能拦截备份吗?
另外,我之后不应该再次从已知主机列表中删除 IP 吗?备份每天都会运行。听起来像是一长串动态的已知主机!
答案1
此警告消息并不表示存在安全风险,因为它已经验证了服务器发送的主机密钥与您正在连接的主机名的已知主机密钥相匹配。(我实际上认为这个词Warning
应该从这条特定消息中省略。)
您可以从已知主机列表中清除那些动态添加的 IP + 主机密钥对。但它们实际上并没有什么坏处,如果您需要通过 IP 地址而不是主机名 ssh 到主机,那么将条目保存在已知主机文件中会很方便。
如果您使用动态 IP 连接到多个不同的主机,最终可能会遇到这样的情况:一个主机收到的 IP 地址之前ssh
记录了不同的主机密钥。在这种情况下,您将收到错误,并且需要删除过时的 IP + 主机密钥对。(如果您对已知主机文件中的行进行哈希处理,则要删除的对会更难识别。)
为提高安全性,您可以采取的一项措施是使用基于密钥的身份验证,而不是基于密码的身份验证。密钥不仅比密码更难猜测,而且更难执行中间人攻击,因为密钥实际上用于签署会话 ID,而会话 ID 在中间人攻击的情况下必然不匹配。
答案2
“警告”仅表示主机 IP 地址已发生变化,这是您所期望发生的。
OpenSSH 客户端会检查 IP 是否更改,以便在主机密钥更改时向您提供“DNS 欺骗提示”。正如 @kasperd 所解释的那样,由于您的情况是主机密钥正确,因此警告毫无意义。
实际上,由于您预计 IP 会发生变化,您可以关闭CheckHostIP
以避免出现警告:
sftp -o "CheckHostIP no" **@**
如果主机密钥发生改变,您仍然会收到警告。