我将在我的测试web服务器上为git pull更改设置一个cronjob。但是我的私钥有密码,我怎么能把它作为参数传递呢?
git pull something mypassword
我愿意在cronjob上使用它,我不想留下没有密码的私钥。
谢谢
您不想在没有密码的情况下留下私钥,但在cron工作描述中存储密码没有问题吗?这似乎有点奇怪。
您可能可以使用ssh-agent来完成它(不确定,但可以搜索它),但坦率地说,我觉得它有点傻。
没问题。keychain
就是你需要的。您应该能够在您的发行版中找到它。
您需要的是只读访问。要通过SSH执行此操作:
- 在远程服务器上创建一个用户,该用户对存储库路径具有只读访问权限。
-
用这个用户通过SSH登录并且验证您能够读取文件(
less /path/to/repo/.git/config
)但不能写入(touch /path/to/repo/.git/config
应该失败)。 - 在
cron
可读的路径中创建一个不带密码的SSH密钥- 启用
ssh-copy-id -i /path/to/passwordless/id.pub cron-user@server.example.com
无密码登录- 在
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