更新

更新

我正在尝试设置此 EC2 实例以侦听来自 Github 的 webhook,然后运行git pull。Web 在用户“apache”下运行它。

我正在关注:http://jondavidjohn.com/blog/2012/10/git-pull-from-a-php-script-not-so-simple

当我看到你开始跑步的最后一部分时:

sudo -u www git pull

我的服务器要求我输入“ec2-user”的密码。据我所知,你不会得到这个密码,你只会得到一个密钥,而且我无论如何也想不出如何运行 git pull。

来自我的 apache 错误日志:

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

据我所知,我需要添加一个 SSH 密钥,但我不能,因为我不知道 ec2-user 的密码,无法为用户“apache”运行该命令。

我尝试了一切:

<?php
// POST http://example.com/pull.php
putenv("HOME=/var/www/worker");

echo shell_exec("
#!/bin/sh
cd /var/www/html/worker/ || exit
unset GIT_DIR
git pull 2>&1
");

还有人遇到过这种情况吗?

更新

当我跑步时,sudo bash我会像跑步一样跑步

[root@ip-10-233-33-33]#

当我运行时,cat /etc/passwd我可以确认我需要使用的帐户名为apache

当我跑步时su apache我得到:

This account is currently not available.

答案1

您是否阅读了整篇文章?特别是:

我发现一个更简单的方法是给 apache 用户一个主目录(通过 /etc/passwd)和一个 .ssh 目录,然后以 apache 用户(www)的身份运行 ssh-keygen 命令

$> sudo -u www ssh-keygen -t rsa 这将创建密钥并将其放置在预期位置并应用适当的权限。

然后我将该密钥添加为 BitBucket 存储库的只读密钥,一切都按预期工作。

相关内容