2011-06-15 50 views
0

我有一个Ant构建,它有时会在我的服务器上的目录中执行'git push'。我可以交互地做到这一点,因为它会为我的密钥请求密码,但如果您设置一个cron作业来无人值守地运行构建,这会变得有问题。SSH和无人参与进程

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

我看到有网友提出来运行的cron作为守护在这里: Accessing SSH key from bash script running via a cron job - 但我不知道我怎么能做到这一点或者将它以纯文本等把我的密码不影响它

任何帮助非常感谢。

回答

0

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

使用ssh-keygen生成一个公钥/私钥对密码。将公钥添加到服务器上的〜/ .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文档。

当然,你想保持私钥文件只能由你读。

+0

在服务器上创建git帐户有什么好处? – jimlamiell 2011-06-15 15:42:47

+0

隔离。 'git'帐户只能访问需要完成其工作的数据。因此,如果有人破坏了账户(或者你的密钥),他们只能搞乱你的git仓库,而不会损害其他任何东西。 – Nemo 2011-06-15 15:49:13

+0

你可以用git账户来描述设置吗,我对此还是有点遗憾。钥匙去哪了,我将如何能够从原始账户上的git账户运行ant build? – jimlamiell 2011-06-15 16:15:57

0

我可以通过在git服务器上创建一个受限帐户来解决这个问题,并让蚂蚁客户端使用该无限制帐户的无密钥证书。

+0

你能再描述一下吗?此外,git存储库也在我的服务器上,我使用SSH将我的活动站点推送到不同子域中的存储库。 – jimlamiell 2011-06-15 14:47:19