8

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

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

当我在没有 sshpass 的情况下运行命令时,它会提示我主机的真实性和密码。

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

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

4

4 回答 4

21

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

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

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

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

于 2017-06-04T09:07:59.440 回答
10

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

sshpass -p "yourpassword" rsync -rvz -e 'ssh -o StrictHostKeyChecking=no -p 22' --progress  root@111.111.111.111:/backup/origin /backup/destination/
于 2017-08-22T20:31:11.773 回答
6

我在cyberciti找到了以下命令。这让我可以做我需要的事情。

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

于 2017-06-02T21:35:47.323 回答
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.
于 2018-04-16T11:26:34.300 回答