【SSH】scp出现Host key verification failed

出现 Host key verification failed 错误的原因是 SSH 客户端无法验证目标主机的身份,通常是因为:

  1. 目标主机的公钥未被信任:首次连接某台服务器时,SSH 会提示用户确认该主机的指纹,若未确认或自动跳过,则会出现此错误。
  2. known_hosts 文件中存在冲突的密钥记录:如果之前连接过该主机并保存了其公钥,但该主机的 SSH 密钥已更改(如重装系统),则会因为密钥不匹配而拒绝连接。
  3. 权限问题.ssh 目录或 known_hosts 文件的权限设置不当,导致 SSH 无法读取或写入。

解决方法

✅ 方法一:手动清除特定主机的密钥记录

使用你提到的命令来删除旧的密钥记录:

 

bash

ssh-keygen -f "/home/xxx/.ssh/known_hosts" -R "192.168.x.xx"

这将从 known_hosts 文件中移除 IP 地址为 192.168.x.xx的主机记录。

执行完此命令后,再次尝试 scp 或 ssh 操作,系统会提示你是否信任该主机的新密钥。


✅ 方法二:禁用 Strict Host Key Checking(仅限可信网络)

在脚本或自动化部署中,可以临时禁用主机密钥检查(不推荐用于生产环境):

 

bash

scp -o StrictHostKeyChecking=no aaa root@192.168.x.xx:/opt/

也可以添加 -o UserKnownHostsFile=/dev/null 来避免修改本地 known_hosts 文件:

 

bash

scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null aaa root@192.168.x.xx:/opt/


✅ 方法三:手动添加主机密钥到 known_hosts

如果你已经确认目标主机的指纹是可信的,可以手动将其添加到 known_hosts 文件中。例如:

 

bash

ssh-keyscan 192.168.0.x.xx >> ~/.ssh/known_hosts


建议操作流程(推荐)

  1. 清除旧记录

     

    bash

    ssh-keygen -f "/home/xxx/.ssh/known_hosts" -R "192.168.x.xx"

  2. 手动测试 SSH 连接以确认新密钥

     

    bash

    ssh root@192.168.x.xx

    此时会提示是否信任该主机,输入 yes 即可将其加入 known_hosts

  3. 再执行 scp 或其他操作

     

    bash

    scp aaa root@192.168.x.xx:/opt/


注意事项

  • 使用 sshpass 时确保密码正确且目标主机允许密码登录。
  • 若频繁遇到此类问题,建议配置 SSH 公钥认证以替代密码方式,提高安全性和便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值