我是svn和ssh的新手。我试图在crontab上每3小时更新一次本地系统中的5个存储库。因此,为了实现这一点,我使用以下步骤设置了ssh passwordless login:
ssh-keygenssh-copy-id -i ~/.ssh/id_rsa.pub test@repo.test.inssh test@repo.test.in,直到这里,它对我很好。我可以在没有密码的情况下登录。但是,当我尝试在5个存储库上执行sudo svn update时,它是在输入密码。如何在没有密码的情况下进行svn更新。我是否可以每3小时更新一次cron上的存储库?我提到了这,但没能得到它。我在用
`Ubuntu version : Ubuntu 13.04`
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012发布于 2013-12-16 11:31:03
问题是,由于您使用了sudo,所以svn update命令以root的形式执行,因此没有考虑到普通用户的~/.ssh目录。
如果您必须将svn update作为根执行,那么您还应该执行您描述为根的步骤1和步骤2,即使用sudo。但只有这样做,你才会意识到你在做什么。
如果您可以以正常用户的身份进行所有的svn更新,那将是一个更好的方法。在这种情况下,只需删除sudo,只执行命令svn update作为一个cron作业。此外,您还必须以正常用户的身份运行cron作业。请参考这里的答案,了解如何以普通用户的身份执行cron作业:
https://superuser.com/questions/170866/how-to-run-a-cron-job-as-a-specific-user
在这种情况下,您可能希望在/etc/crontab中这样做:
00 */3 * * * yourusername cd /some/path/ && svn update将yourusername替换为生成SSH密钥并将公钥复制到test@repo.test.in的用户的用户名,将/some/path/替换为要签出的svn的本地副本的路径。
发布于 2013-12-16 11:16:22
任何使用sudo运行的命令(没有进一步的参数)都将作为root运行。root无法访问SSH密钥,因此您的无密码登录设置失败。
如果您的设置在与您自己的用户一起运行时有效,那么修复是很容易的。为了在cron作业中运行svn更新,但是对于您的用户,请尝试使用-u选项。
sudo -u yourusername svn update发布于 2013-12-16 11:17:40
这是一个相当简单的..。
sudo svn update我不确定我还需要说些什么,只是想多说一点.以sudo的形式运行意味着您以root的身份运行。这意味着您的本地~/.ssh/配置对zip很重要。
这也意味着创建的所有文件都属于root。用户不可编辑。这就是为什么我们从不在subversion中使用sudo (大声重复这一点)的原因。这是不必要的,也是有害的。
要解决这个问题,我建议删除本地副本(只要有备份),然后以用户身份签出新副本。在您的crontab中,只需省略sudo。
https://askubuntu.com/questions/391513
复制相似问题