使用 sshpass rsync 的主机密钥验证失败

Host Key Verification Failed with sshpass rsync

在我的 linux 服务器上,我 运行 命令:

sshpass -p 'password' rsync -avz /source/folder/ root@192.168.x.x:/dest/folder

当我 运行 命令没有 sshpass 时,它会提示我验证主机和密码。

我需要一些等同于“-o StrictHostKeyChecking=no”(我用于 ssh)的东西,这样我就可以 运行 这没有提示或错误。

我从谷歌搜索中看到的一切都是关于 ssh 抛出错误而不是 rsync。

我在 cyberciti 找到了以下命令。这使我能够完全按照自己的需要去做。

$ rsync --rsh="sshpass -p myPassword ssh -o StrictHostKeyChecking=no -l username" server.example.com:/var/www/html/ /backup/

如果你想连接到新服务器,public 密钥还不在你的 ~/.ssh/knonwn_hosts 中,你不应该跳过这个唯一的安全检查,而是将服务器主机密钥存储在known_hosts 手动,验证它是正确的,然后使自动检查工作。

使用服务器主机密钥获取已知主机的最简单方法是使用

ssh-keyscan server-ip >> ~/.ssh/known_hosts

之后,您应该不需要使用 StrictHostKeyChecking=no 解决方法。

这是没有输出错误的正确命令:

sshpass -p "yourpassword" rsync -rvz -e 'ssh -o StrictHostKeyChecking=no -p 22' --progress  root@111.111.111.111:/backup/origin /backup/destination/

在某些情况下,sshpass 会尝试将 "assword" 作为默认密码提示指示符。但是rsync可以return类似string:

Enter passphrase for key '/home/user/.ssh/private_user_key':

所以,尝试添加'-P'参数:

sshpass -p "yourpassword" -P 'Enter passphrase for key' rsync 111.111.111.111:/backup/origin /backup/destination/

您可以在 /home/user/config 中设置或使用 -e 参数设置的私钥路径:

sshpass -p "yourpassword" -P 'Enter passphrase for key' rsync -e 'ssh -i /home/user/.ssh/private_user_key' 111.111.111.111:/backup/origin /backup/destination/

有关默认密码提示指示器的更多信息:

$ sshpass -V
sshpass 1.06
(C) 2006-2011 Lingnu Open Source Consulting Ltd.
(C) 2015-2016 Shachar Shemesh
This program is free software, and can be distributed under the terms of the GPL
See the COPYING file for more information.

Using "assword" as the default password prompt indicator.