在我的Linux服务器上,我运行以下命令:
sshpass -p 'password' rsync -avz /source/folder/ root@192.168.x.x:/dest/folder
如果我不使用sshpass运行该命令,它将为我提供有关主机的真实性和密码的提示。
我需要一些等价于“-o StrictHostKeyChecking=no”的东西(我用于ssh),它将允许我无需提示或错误地运行此命令。
我在谷歌搜索的所有结果都与ssh抛出的错误有关,而不是rsync。
如果您想连接到一个新服务器,且该服务器的公钥尚未存储在您的~/.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/
$ rsync --rsh="sshpass -p myPassword ssh -o StrictHostKeyChecking=no -l username" server.example.com:/var/www/html/ /backup/
Enter passphrase for key '/home/user/.ssh/private_user_key':
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
ssh-keyscan -p 端口 服务器IP >> ~/.ssh/known_hosts
- Henry Luo