sshpass报错Host key verification failed.

本文介绍了解决sshpass进行scp跨机器拷贝时遇到的Hostkeyverificationfailed错误的方法。通过修改ssh配置,避免公钥验证失败,并更新known_hosts文件确保远程主机信任。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sshpass连接时报错Host key verification failed.

ssh命令登录不能带密码,需要再次从命令行输入密码确认的。
sshpass可以带密码进行免确认的ssh登录,且后面可以携带需要执行的命令。
密码中有特殊符号需要用单引号引起来。

最近在使用sshpass进行scp跨机器拷贝时总是报错:
sshpass -p ‘123#456’ scp -r -P 3577 /home/file deploy@168.28.136.22:/home/file
报错信息:
Host key verification failed.

解决方法:
由于该远程机器从未连接过,
检查known_hosts文件:vi ~/.ssh/known_hosts ,看有没有该IP(168.28.136.22)的信息,
如果没有则说明没有连接过该机器

  1. 需要先用ssh连接一下:ssh -p 22-o StrictHostKeyChecking=no deploy@168.28.136.22
$ ssh -p 22-o StrictHostKeyChecking=no  deploy@168.28.136.22 
deploy@168.28.136.22's password: #输入密码确认 

再次检查known_hosts文件:vi ~/.ssh/known_hosts ,发现有该机器的地址sha2记录了

$ vi ~/.ssh/known_hosts
[168.28.136.22]:22 ecdsa-sha2-nistp256 AAAssssssxyzxyzhLXNxxxxxxmlzdHAyxxxxxxAyyyyyyyyyyyeyyyyyyyyyyyyyOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0dZpIzA=
  1. 然后再用sshpass 即可
sshpass -p '123#456' scp -r -P 3577 /home/file deploy@168.28.136.22:/home/file

~/.ssh/known_hosts 文件的作用?
ssh会把你所有访问过的电脑的公钥(public key)都记录在~/.ssh/known_hosts文件。
当下次访问相同电脑时,OpenSSH会核对公钥,
如果核对不上,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值