我正在使用 rsync 将文件复制到设备:
sshpass -p <password> rsync -avzP <file> <user>@<IP address>:<folder>
这在过去工作得很好,但我试图复制到新设备并得到:
Host key verification failed.
rsync error: unexplained error (code 255) at rsync.c(703) [sender=3.2.3]
我删除sshpass
并尝试rsync -avzP <file> <user>@<IP address>:<folder>
并得到:
The authenticity of host '<IP address>' can't be established.
<Name> key fingerprint is SHA256:<hex>.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入yes
修复了这个问题,然后我可以运行原始命令。但是我怎样才能用一个命令来做到这一点呢sshpass
?
答案1
如果StrictHostKeyChecking
设置为accept-new
或no
,新主机将自动添加到~/.ssh/known_hosts
文件中。默认为ask
.
如果主机密钥发生更改,您将收到一条警告消息,开头如下
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
如果设置为 则允许连接no
。使用 时accept-new
,不允许更改主机密钥,并且您必须首先删除有问题的行known_hosts
。
sshpass -p <password> rsync -avzP -e 'ssh -o StrictHostKeyChecking=accept-new' <file> <user>@<IP address>:<folder>
如果您想覆盖所有主机的默认设置,您可以在以下位置添加一个条目~/.ssh/config
:
Host *
StrictHostKeyChecking accept-new
答案2
您需要删除known_hosts
位于该路径中的文件~/.ssh/known_hosts
您可以使用该"-o StrictHostKeyChecking=no"
选项绕过主机密钥验证提示并自动将新主机密钥添加到文件中known_hosts
。更新后的命令如下所示:
sshpass -p <password> rsync -o StrictHostKeyChecking=no -avzP <file> <user>@<IP address>:<folder>