我从osx 10.6.8工作站运行rsync作为LaunchDaemon,将数据备份到Ubuntu 11.1服务器。由于我将plist文件放在/ Library / LaunchDaemons中,因此它以root身份运行。不幸的是,它失败了,因为该命令需要服务器的root密码。当我使用自己作为用户运行它时,rsync使用我在我的帐户的两台机器之间设置的ssh密钥但不幸的是,它无法在我的osX机器上构建完整的文件列表,因为我没有列出的权限其他用户的目录。
我可以看到几种可能性,我不知道该怎么做:
-1-在osx上,如何为自己提供列出其他用户目录的权限,以便我可以用自己的用户名运行守护进程?
OR
-2-如果我以root用户身份运行rsync守护程序,是否可以安全地在两台计算机的root帐户之间设置ssh密钥?或者,我可以以相对安全的方式自动将密码提供给deamon作业吗?
答案 0 :(得分:0)
我看到在root帐户下使用密钥的两种简单方法:
在ssh命令中明确指定ssh密钥,如下所示:
<key>ProgramArguments</key>
<array>
<string>/usr/bin/rsync</string>
<string>-i</string>
<string>/Users/thomashollier/.ssh/id_rsa</string>
<string>...etc...</string>
<array>
答案 1 :(得分:0)
感谢您的提示。我将密钥复制到服务器的根ssh密钥的正确位置。我能够从我的osX机器ssh和rsync到命令行的服务器,但不能直接从我的launchDaemon。命令行上的rsync命令需要-e“ssh -i / path / to / my / key / id_dsa”参数,我还没想出如何在plist文件中包含这些引号而不是为它提供bash命令如下:
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/usr/bin/rsync -avz /Users/myusername/Documents -e "ssh -i /Users/myusername/.ssh/id_dsa" server:/media/Backup/backup/</string>
</array>