最近在使用scp命令上传文件时遇到以下错误:
这个错误信息说明你的本地机器以前连接过这台远程主机,并且在本地的 ~/.ssh/known_hosts 文件中记录了其主机密钥(Host Key)。现在这台远程主机的主机密钥已经发生了变化,可能是因为重装了系统、重新生成了SSH密钥,或者是其他原因。这种变化可能导致潜在的中间人攻击(man-in-the-middle attack)风险,因此 ssh 会警告并中断连接。
回想起确实重启过云服务器,故有以下解决方法:
1、手动删除旧的主机密钥
sed -i '3d' ~/.ssh/known_hosts
或者可以使用 ssh-keygen 工具来删除:(输入你自己的IP)
ssh-keygen -R IP
2、再次尝试连接
删除旧的主机密钥之后,再次尝试使用 scp 命令:
scp -r /path root@IP:/path/
这一次,你会被提示接受新的主机密钥。输入 yes 确认即可:
The authenticity of host '10.168.1.51 (10.168.1.51)' can't be established.
ECDSA key fingerprint is SHA256:wFv2b9BQt4tRci9pYERjn/zpnLtOBEqwCI46fnOCx4g.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.168.1.51' (ECDSA) to the list of known hosts.
之后,scp 命令应该会成功执行。