【发布时间】:2020-06-22 16:09:12
【问题描述】:
我正在尝试设置一个简单的 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 是我们需要执行git pull 以添加必要的 SSH 密钥信息的 Apache 用户,但它不起作用。当我尝试运行以下内容时:
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 文件,所以也许这是我需要担心的?我不太确定。
这很像权限错误(错误消息暗示了很多),但我真的不确定需要更改哪个文件以及如何更改。任何建议将不胜感激。谢谢。
【问题讨论】:
-
~/.ssh是指/home/apache/.ssh吗?或者您使用哪个用户登录? apache 用户是否配置了 shell? apache 用户对/usr/share/httpd有哪些权限? -
对不起,不够清晰。
~是ec2-user,AWS EC2 实例的默认用户。没有/home/apache目录。此外,/usr/share/httpd目录具有以下所有者和组:root:root。 -
那么最后一点可能是你的问题。
sudo -u apache使用 apache 用户而不是 root 运行命令。如果尝试在/usr/share/httpd内部创建.ssh/known_hosts,则apache 用户将无权访问它。根据您的安全要求,您可以更改 /usr/share/httpd 的所有者或权限 - 但出于显而易见的原因,我不建议在可公开访问的服务器上这样做 -
Permission denied (publickey).表示您的公钥未列在您尝试连接的遥控器上(这意味着您没有使用正确的私钥)。我会确保将它们放入同一个.ssh目录中,在 Amazon Linux AMI 上可能应该称为id_rsa。致命的似乎是后续错误 -
SSH 密钥与打开连接的系统用户无关。只需将
id_rsa文件从 ec2-users .ssh 目录移动到前面提到的目录
标签: php git amazon-web-services amazon-linux-2 known-hosts