使用 sshpass 和 rsync 来接受指纹

使用 sshpass 和 rsync 来接受指纹

我正在使用 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-newno,新主机将自动添加到~/.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>

相关内容