SSH和无人参与的进程

时间:2011-06-15 14:41:36

标签: ant ssh cron

我有一个Ant构建,有时会在我的服务器上的目录中执行'git push'。我可以交互式地做这件事,因为它要求我的密钥的密码,但如果你设置一个cron作业来无人值守地运行构建,这就会成为问题。

除了不使用密码短语之外,我还有其他选择吗?我听说过使用ssh-agent,但我也听说过无人值守的进程,路由不起作用。有没有人对此有任何建议,也许是如何实现它的一个例子?

我看到有人建议在这里运行cron作为守护进程: Accessing SSH key from bash script running via a cron job - 但我不知道如何做到这一点,或者在没有妥协的情况下输入我的密码,将其放在纯文本等等。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我会通过在git服务器上创建受限帐户并让ant客户端使用该受限帐户的无密钥证书来解决此问题。

答案 1 :(得分:0)

首先,为自己设置无密码登录。

使用ssh-keygen生成带有 no 密码的公钥/私钥对。将公钥附加到服务器上的〜/ .ssh / authorized_keys。

然后运行ssh -i /path/to/private_key server以确认无密码登录正在运行。

最后,configure git to use that ssh -i ... command

正如@mah建议的那样,您可能希望在服务器上创建特定的git帐户。您可以将公钥添加到~git / .ssh / authorized_keys以启用无密码登录。

authorized_keys还具有限制传入连接可以运行的命令的选项。如果您对这些功能感兴趣,请阅读SSH文档。

当然,您希望保持私钥文件只能由您阅读。