Git拉,无需输入私钥密码



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

git pull something mypassword

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

谢谢

您不想在没有密码的情况下留下私钥,但在cron工作描述中存储密码没有问题吗?这似乎有点奇怪。

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

没问题。keychain就是你需要的。您应该能够在您的发行版中找到它。

您需要的是只读访问。要通过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. crontab中列出的脚本的开头添加eval $(ssh-agent); ssh-add /path/to/passwordless/id;

应该可以了

您可以编写一个expect脚本,以便在需要时提供密码。像这样:

#!/usr/bin/expect --
set password ssh-key-password
spawn git pull
expect "Enter passphrase*:" {send "$passwordr"}

你可能需要包括

expect eof

最新更新