![第一次使用 scp -r 时,我一直收到错误“主机密钥验证错误”](https://linux22.com/image/1608621/%E7%AC%AC%E4%B8%80%E6%AC%A1%E4%BD%BF%E7%94%A8%20scp%20-r%20%E6%97%B6%EF%BC%8C%E6%88%91%E4%B8%80%E7%9B%B4%E6%94%B6%E5%88%B0%E9%94%99%E8%AF%AF%E2%80%9C%E4%B8%BB%E6%9C%BA%E5%AF%86%E9%92%A5%E9%AA%8C%E8%AF%81%E9%94%99%E8%AF%AF%E2%80%9D.png)
我以前从未使用过 bash 语言(scp -r 是 bash 的一部分吗?),我想将一个 C++ Xcode 文件复制到另一个 IDE(更具体地说是用于机器人控制器)。那个 C++ 文件位于一个文件夹中,我听说您使用scp -r
文件夹?所以我尝试使用它: 主机密钥是控制器的 IP 地址,我不太清楚是什么,有人告诉我使用它。scp -r Desktop/oroni-club/gyro.cpp [email protected]:"[path]"
"[path]"
我也不断收到此错误:Host key verification failed. lost connection
,并且它最终无法将 C++ 文件复制到其他 IDE。
我不确定该怎么做以及如何将 C++ 文件复制到这个其他非 C++ IDE(这个只提供 C 和 Python,但你仍然可以通过终端使用 bash 添加 C++ 文件),我对此完全陌生...
答案1
主机密钥是一个 RSA(或 DSA,或椭圆曲线)公钥,ssh/scp 服务器(运行 sshd 的服务器)通过它向您的 ssh/scp 客户端验证自身身份,因此您知道自己没有连接到冒名顶替的服务器。首次连接到新服务器时,ssh/scp 客户端会询问您是否要接受提供的主机密钥。如果您接受,它将被存储起来,~/.ssh/known_hosts
以便将来用于验证该主机。
如果您确定没有遇到中间人攻击或其他冒名顶替者,您可以清除之前为该主机名或 IP 地址缓存的主机密钥,方法是编辑~/.ssh/known_hosts
以删除该主机的行,或者您可以使用ssh-keygen -R hostname
删除它。如果您始终通过 IP 地址连接,则使用该 IP 地址而不是主机名作为 的参数ssh-keygen -R …
。