sshpass rsync出现主机密钥验证失败问题

10

在我的Linux服务器上,我运行以下命令:

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

如果我不使用sshpass运行该命令,它将为我提供有关主机的真实性和密码的提示。

我需要一些等价于“-o StrictHostKeyChecking=no”的东西(我用于ssh),它将允许我无需提示或错误地运行此命令。

我在谷歌搜索的所有结果都与ssh抛出的错误有关,而不是rsync。

4个回答

23

如果您想连接到一个新服务器,且该服务器的公钥尚未存储在您的~/.ssh/knonwn_hosts文件中,则不应跳过此唯一的安全检查,而是手动将服务器主机密钥存储在known_hosts文件中,并验证其正确性,然后使自动检查生效。

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

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

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


3
对于那些在非标准端口上运行SSH的用户,命令应该是: ssh-keyscan -p 端口 服务器IP >> ~/.ssh/known_hosts - Henry Luo

9

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

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

1
解决方案的关键是添加SSH选项“-o StrictHostKeyChecking=no”。 - Henry Luo

6
我在 cyberciti 上发现了以下命令。这使我能够准确地完成我需要的工作。 $ rsync --rsh="sshpass -p myPassword ssh -o StrictHostKeyChecking=no -l username" server.example.com:/var/www/html/ /backup/

2
跳过唯一的检查,以防止恶意攻击者进入您和服务器之间并窃取您的密码,监听您传输的任何内容并潜在地修改它,这是非常糟糕的做法。请注意这一点。 - Jakuje
3
我不在意那个。我的服务器和整个网络都被物理封闭在一个安全的房间里。 - khm
1
绕过安全检查 - 在您的情况下使用的唯一检查 - 绝不能成为解决方案。它也绝不能成为被接受的答案。虽然它可能是您特定问题的解决方案,并且您在这种情况下接受了风险,但这并不意味着它是其他人的最佳解决方案。我鼓励您重新考虑您的“接受答案”。 - eDonkey

1
在某些情况下,sshpass尝试查找"assword"作为默认密码提示指示符。但是rsync可能会返回类似的字符串:
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.

在网上四处搜索并尝试解决我的问题后,这个-P '输入密钥密码'解决了我的连接问题。谢谢。 - theOneWhoKnocks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接