如何通过带有rsa密钥密码的ssh使用rsync?

如何将rsync与密码一起使用? 我发现使用无密码短语的所有Google搜索“解决方案”似乎都不是真正的选择。

我正在运行2个ubuntu服务器12.04.2 LTS。

如果您将rsync与普通用户一起使用,则ssh-agent可能就是您要查找的内容。

如果在cron作业中使用rsync时遇到此问题。 Cron作业由用户cron在受限制的环境中运行(某些env var如SSH_AUTH_SOCK缺失,因此ssh-agent不起作用)。

演练是使用钥匙串 。 Keychain将ssh-agent environement变量保存在文件中。
所以,首先你要安装钥匙串。
然后,在.bashrc,.zshrc或.profile文件中添加这些行(调整它以匹配您的ssh键):

 /usr/bin/keychain $HOME/.ssh/id_rsa source $HOME/.keychain/${HOSTNAME}-sh 

另外,要使cron作业正常工作,您可以在cron脚本的开头添加此行:

 source $HOME/.keychain/${HOSTNAME}-sh 

本文中的更多信息: http : //eli.thegreenplace.net/2013/10/08/some-notes-on-logging-and-ssh-access-from-cron-jobs/

 rsync -Pavp --rsh="ssh -i YOUR_KEY" DEST USER@REMOTE:SOURCE 

我在https://stackoverflow.com/questions/3299951/how-to-pass-password-for-rsync-ssh-command上找到了完美答案

它对我来说很完美。 正如kainjow所说,这是一种安全风险,但它解决了这个问题。

通过回答kainjow:

如果您不能使用公钥/私钥,您可以使用expect:

 #!/usr/bin/expect spawn rsync SRC DEST expect "password:" send "PASS\n" expect eof if [catch wait] { puts "rsync failed" exit 1 } exit 0 

您需要使用正常的rsync源和目标参数替换SRC和DEST,并用您的密码替换PASS。 只需确保此文件安全存储!

我想你想要的只是’-e’参数,rsync使用ssh连接,它会自动询问你的密码……

rsync -avze ssh /home/user remoteuser@example.com:/backups这会将/ home / user从本地计算机复制到远程计算机/备份目录

    Interesting Posts