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