Mar*_*čič 5 php apache git ssh bitbucket
我从远程服务器上的php脚本运行git pull时遇到问题.我已经看了很多不同的资源来使它工作,但没有一个适合我.那么到目前为止我做了什么:
为Apache创建了pub和私钥:
mkdir /var/www/.ssh
sudo chown -R apache:nobody /var/www/.ssh
su - apache -c "ssh-keygen -t rsa"
Run Code Online (Sandbox Code Playgroud)然后我把我的公钥放在Bitbucket上.
然后我运行命令:
sudo -u apache git pull
Run Code Online (Sandbox Code Playgroud)一切正常.
毕竟我写了一个简单的sh脚本,我打电话来自PHP.
.sh脚本:
#!/bin/sh
git pull
Run Code Online (Sandbox Code Playgroud)和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 用户来说这是不同的用户会话。
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |