我正在尝试设置一个简单的PHP脚本,当您转到我设置的AWS Amazon Linux 2 AMI测试web服务器上的特定URL时,该脚本可以执行git pull
。
不过,我在尝试这样做时遇到了一些问题,从那以后,我一直在关注这篇文章,试图解决问题:https://jondavidjohn.com/git-pull-from-a-php-script-not-so-simple/
我被困在作者说要运行sudo -u www git pull
的步骤上。
在我的系统中,apache
是Apache用户,我们需要为其执行git pull
,以便添加必要的SSH密钥信息,但它不起作用。当我尝试运行以下程序时:
sudo -u apache git pull
我得到以下错误:
Failed to add the host to the list of known hosts (/usr/share/httpd/.ssh/known_hosts).
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我不知道这是否是一个问题,但/usr/share/httpd
下没有.ssh
目录。~/.ssh
下有一个known_hosts
文件,所以也许这就是我需要担心的那个?我真的不确定。
这感觉很像是一个权限错误(错误消息也暗示了这一点(,但我真的不确定需要在哪里以及如何更改什么文件。如有任何建议,我们将不胜感激。非常感谢。
非常感谢ArSeN在我们上面的评论中为我介绍了整个过程。对我来说,最终解决这个问题的是更改apache
用户SSH密钥需要所在的/usr/share/httpd
目录的权限,然后将ec2-user
已经使用的SSH密钥复制到该目录。
以下是我运行的命令:
sudo chown -R ec2-user:apache /usr/share/httpd
sudo chmod -R 777 /usr/share/httpd
sudo cp -r /home/ec2-user/.ssh/ /usr/share/httpd/.ssh/
sudo chown -R ec2-user:apache /usr/share/httpd
sudo chmod -R 755 /usr/share/httpd
sudo chown -R ec2-user:apache /var/www
cd /var/www/project-name/
sudo -u apache git pull
sudo chown -R ec2-user:apache /var/www
正如您在命令中看到的那样,无论出于什么原因,我都必须运行chown
几次才能正确设置用户/组的内容,但最终它起了作用,我能够得到我想要的东西。再次感谢ArSeN。
尝试删除know_hosts
,然后重试:
rm ~/.ssh/known_hosts
在权限不足的情况下:
sudo chmod -R 700 ~/.ssh/