来自Bitbucket服务器的Git pull

Mar*_*čič 5 php apache git ssh bitbucket

我从远程服务器上的php脚本运行git pull时遇到问题.我已经看了很多不同的资源来使它工作,但没有一个适合我.那么到目前为止我做了什么:

一切正常.

毕竟我写了一个简单的sh脚本,我打电话来自PHP.

  1. .sh脚本:

    #!/bin/sh
    git pull
    
    Run Code Online (Sandbox Code Playgroud)
  2. 和PHP脚本:

    <?php    
    $cmd="./gitpullsc.sh 2>&1";
    echo exec($cmd);
    ?>
    
    Run Code Online (Sandbox Code Playgroud)

我从网络浏览器运行php脚本,然后我回来了:

权限被拒绝(publickey).
致命:无法从远程存储库读取.

请确保您具有正确的访问权限并且存储库存在.

然后我尝试添加到脚本whoami(以查看运行php脚本的用户是否正确)并且我得到了apache.一切都好.

我使用Red Hat linux.

任何帮助赞赏:)

UPDATE

好吧,也许我发现了问题,但仍在寻找解决方案.

我再次运行sudo -u apache git pull,现在我再次被要求提供私钥密码.

但如果我运行命令,ssh-add -l我得到:

2048 ***数量写** /var/www/.ssh/id_rsa(RSA)

所以我认为一切都很好.但问题可能是我以这种方式运行ssh代理:

ssh-agent /bin/bash
Run Code Online (Sandbox Code Playgroud)

UPDATE

是的,问题实际上是密码提示.我仍然不知道如何解决它,但是现在我只是把密码留空了它的工作原理......

小智 0

ssh-agent您需要被叫的经理keychain

百胜安装钥匙串

如果官方 RHEL 存储库中没有,您可以从RPM forge存储库中获取它。要测试启动新用户会话并将密钥手动加载到 ssh-agent。假设您生成的密钥名为 id_dsa 并且位于 ~/.ssh/ 目录内。

$ssh-add ~/.ssh/id_dsa
Run Code Online (Sandbox Code Playgroud)

但是,这仍然可能无法解决您的浏览器问题,因为对于 apache 用户来说这是不同的用户会话。