如何通过 ssh 使用 rsync 和 rsa 密钥密码?

如何通过 ssh 使用 rsync 和 rsa 密钥密码?

我该如何使用rsync密码?我在 Google 上搜索的所有“解决方案”都使用无密码密钥,这似乎不是一个真正的选择。

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

答案1

如果你以普通用户身份使用 rsync,ssh 代理可能就是您正在寻找的。

如果在使用时遇到此问题同步在 cron 任务中。cron 任务由用户运行计划任务在受限环境中(缺少某些环境变量,如 SSH_AUTH_SOCK,因此ssh 代理不起作用)。

演练是使用钥匙链。Keychain 将 ssh-agent 环境变量保存在一个文件中。
因此,首先安装 keychain。
然后,在 .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/

答案2

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

答案3

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

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

kainjow 的回答:

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

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

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

答案4

我猜您想要的只是 rsync 的“-e”参数来使用 ssh 连接,它会自动询问您的密码......

rsync -avze ssh /home/user [email protected]:/backups 这会将 /home/user 从本地计算机复制到远程计算机的 /backups 目录

相关内容