我正在尝试设置此 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 存储库的只读密钥,一切都按预期工作。