【发布时间】:2017-03-19 10:57:15
【问题描述】:
我在 Github 和我的服务器之间设置了一个 hook,它可以在 Github 请求触发的脚本时自动拉取新的提交。
所有设置都已完成,如 ssh-keys、git origin。我可以通过运行 git pull origin master 从托管在 Github 上的私人仓库中提取新的提交。它适用于 shell。
但是当我将该命令写入deploy.php 文件时,它可以由 Github 触发,但有错误消息。
Host key verification failed. fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
之后,我通过php文件运行命令whoami,它返回用户www-data。
其实我为www-data用户生成了一个key,放到/var/www/.ssh,也复制了id_rsa.pub粘贴到Github,还是认证失败。
- nginx
- 所有文件都设置为属于
www-data:www-data - 我已将
www-data的公钥添加到 repo 的部署密钥中。
deploy.php 命令
shell_exec("cd /var/www/html/tinfo/; git pull origin master 2>&1;");
我的问题是
- 如何为
www-data创建密钥? - 是
www-data的.ssh目录/var/www/.ssh吗? - 如果我没记错,为什么 github 拒绝我的连接?我猜这与用户
www-data执行deploy.php文件并通过PHP 运行命令有关。 - 在与 Github 服务器通信时,
www-data是否没有将其私钥发送到服务器?
非常感谢。
【问题讨论】:
-
我认为这应该是一个 bash 脚本