通过 ssh 进行 Rsync,在命令中使用密码,而不是使用密钥

通过 ssh 进行 Rsync,在命令中使用密码,而不是使用密钥

情况是我们的客户想要从我们的服务器下载最新的备份(他们不想让我们通过 rdesktop 等为他们设置备份。(叹气))。客户端运行的是 Windows,服务器运行的是 Linux。

我不想为他们编写冗长而复杂的指南来设置 pub/pri 密钥认证,因为毫无疑问这会浪费他们和我们的时间。我要让他们安装 cwRsync,它基本上就是适用于 Windows 的 rsync。

通常我会使用公钥/私钥设置来执行此操作并进行安全设置,但这并不是什么大问题。

如何在 rsync 的命令行上指定 ssh 的密码?我习惯: rsync -avz someone@somehost:/blah 。

干杯,约翰

答案1

如何在 rsync 的命令行上指定 ssh 的密码?

简短的回答是你不能。SSH 旨在阻止你这样做。cwRsync 是一个极其精简的 cygwin 安装,只有 ssh/rsync。你可能会使用的工具(如 sshpass 或 expect)将不存在。

考虑到上述限制,我真的怀疑您是否会节省任何时间让他们使用密码。

这通常不是一个好主意,但如果你和他们之间有安全的通信方法,你可以考虑为他们生成密钥对,然后将私钥发送给他们。这似乎并不比让他们将密码存储在某个脚本/文本文件中更糟糕。

答案2

如果没有 rsync 守护进程,您将无法执行此操作。相信我,在我选择密钥解决方案(这要简单得多,也更安全)之前,我尝试了很多次。因此,虽然有很多选项表明您可以执行如下操作:

rsync -avz -e ssh rsynctest/  username@***.***.***.***:/home/directory/rsynctest --password-file=/home/username/rpass

不要相信他们。不要浪费你的时间。仅仅因为你安装了 rsync 和 ssh,它不会起作用。除非你了解如何在没有 ssh 的情况下进行传输(我浪费了一段时间的时间,直到我证实这并不容易)并运行 rsync 守护进程,否则它永远不会起作用。如果你还想尝试的话,这里有两本非常好的书(如果你还没有遵循Zoredache 的好建议)。

http://everythinglinux.org/rsync/(让我们像 1999 年一样狂欢吧 - 说真的,这首歌就是在那时写的)

http://finmath.uchicago.edu/~wilder/Security/rsync/

几年前,我放弃了尝试,转而使用 ssh 密钥,从此再也没有回头。

答案3

你可以像这样使用 sshpass:

sshpass -p 'YourPasswordHere' rsync -av --delete -r -L -k -h 

[email protected]:/var/www/images /home/swayxp/test-sync/

相关内容