我正在为Github和我的服务器之间设置钩子,以便在Github请求时自动拉取新的提交。
所有设置都已完成,包括ssh密钥和git源。我可以通过运行 "git pull origin master" 命令从托管在Github上的私有存储库中拉取新提交。在shell中这个命令可以正常工作。
但是,当我将该命令写入一个名为“deploy.php”的文件中,虽然可以由Github触发,但会出现错误消息。
我的问题是:
所有设置都已完成,包括ssh密钥和git源。我可以通过运行 "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
用户生成了一个密钥,并将它们放在/var/www/.ssh
中,还复制id_rsa.pub
并将其粘贴到Github上,但仍然遇到了身份验证失败的问题。
- nginx
- 所有文件都属于
www-data:www-data
- 我已经将
www-data
的公钥添加到仓库的部署密钥中。
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
没有将其私钥发送到服务器吗?