我有一个Ant构建,它有时会在服务器上的目录中执行"git-push"。我可以以交互方式很好地做到这一点,因为它会要求我的密钥使用密码短语,但如果您设置了一个cron作业以无人值守的方式运行构建,这就成了问题。
除了不使用密码短语之外,还有其他选择吗?我听说过使用ssh代理,但也听说过无人值守进程的路由不起作用。有人对此有什么建议吗?也许还有一个如何实施的例子?
我看到有人建议在这里将cron作为守护进程运行:从通过cron作业运行的bash脚本访问SSH密钥,但我不知道如何做到这一点,也不知道如何在不损害密码的情况下将其放入纯文本等。
非常感谢您的帮助。
首先,为自己设置无密码登录。
使用ssh-keygen
生成具有无密码的公钥/私钥对。将公钥附加到服务器上的~/.ssh/authorized_keys。
然后运行ssh -i /path/to/private_key server
以确认无密码登录正在工作。
最后,将git配置为使用ssh -i ...
命令。
正如@mah所建议的,您可能需要在服务器上创建一个特定的git
帐户。您将公钥添加到~git/.ssh/authorized_keys,以启用无密码登录。
authorized_keys还可以选择限制传入连接可以运行的命令。如果您对这些功能感兴趣,请阅读SSH文档。
当然,您希望保持私钥文件只有您自己可读。
我会通过在git服务器上创建一个受限帐户来解决这个问题,并让ant客户端使用该受限帐户的无密钥证书。