Git Pull没有输入私钥密码

时间:2011-09-06 23:40:55

标签: linux git bash shell cron

我将在我的测试网络服务器上为git pull更改设置一个cronjob。但我的私钥有密码,我怎么能把它作为参数传递?

git pull something mypassword

我愿意在cronjob上使用它,我不想在没有密码的情况下留下私钥。

由于

4 个答案:

答案 0 :(得分:2)

您不想在没有密码的情况下保留私钥,但在cron作业描述中存储密码没有问题?这看起来有点奇怪。

您可以使用ssh-agent(不确定,但搜索它),但坦率地说我觉得它有点傻。

答案 1 :(得分:1)

没问题。 keychain是您所需要的。你应该能够在你的发行版中找到它。 Gentoo Linux有一个guide

答案 2 :(得分:0)

您需要的是只读访问权限。要通过SSH执行此操作:

  1. 在具有只读访问存储库路径的远程服务器上创建用户
  2. 通过SSH与此用户登录验证您可以读取文件(less /path/to/repo/.git/config)但不能写入(touch /path/to/repo/.git/config应该失败)。
  3. cron可读的路径中创建一个没有密码的SSH密钥
  4. 使用ssh-copy-id -i /path/to/passwordless/id.pub cron-user@server.example.com
  5. 启用无密码登录
  6. eval $(ssh-agent); ssh-add /path/to/passwordless/id;
  7. 中列出的脚本的开头添加crontab

    应该这样做。

答案 3 :(得分:0)

您可以使用expect脚本在需要时提供密码。像这样:

#!/usr/bin/expect --

set password ssh-key-password

spawn git pull
expect "Enter passphrase*:" {send "$password\r"}

您可能需要包含

expect eof

在脚本的末尾