【问题标题】:known_hosts file permissions issue when trying to git pull from PHP尝试从 PHP git pull 时出现 known_hosts 文件权限问题
【发布时间】: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


【解决方案1】:

非常感谢 ArSeN 在我们的 cmets 中来回引导我完成整个过程。最终为我解决了这个问题的是更改/usr/share/httpd 目录上的权限,apache 用户 SSH 密钥需要去的地方,然后将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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2017-08-12
    • 2013-01-15
    • 1970-01-01
    • 2015-07-04
    • 2015-04-14
    • 2013-11-05
    相关资源
    最近更新 更多