![](/img/trans.png)
[英]How can I setup automatic Git pull to Ubuntu server from Push to Bitbucket
[英]Git pull from Bitbucket server
我从远程服务器上的php脚本运行git pull时遇到问题。 我已经看了很多不同的资源来使它工作,但没有一个适合我。 那么到目前为止我做了什么:
为Apache创建了pub和私钥:
mkdir /var/www/.ssh sudo chown -R apache:nobody /var/www/.ssh su - apache -c "ssh-keygen -t rsa"
然后我把我的公钥放在Bitbucket上。
然后我运行命令:
sudo -u apache git pull
一切正常。
毕竟我写了一个简单的sh
脚本,我从PHP
调用。
.sh脚本:
#!/bin/sh git pull
和PHP脚本:
<?php $cmd="./gitpullsc.sh 2>&1"; echo exec($cmd); ?>
我从网络浏览器运行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
UPDATE
是的,问题实际上是密码提示。 我仍然不知道如何解决它,但是现在我只是把密码留空了它的工作原理......
我回答了类似的问题。 我真的想添加一个评论,指的是答案,但我没有足够的意见来添加评论。
想法是使用start ssh-agent一次并将密钥加载到它。 稍后,在.bashrc中,更新环境变量,使其指向相同的ssh-agent(已有密钥)。
请看看尝试使用Capistrano进行部署,但是我的远程计算机上的ssh-agent没有加载我的身份,因此git命令失败; 为什么?
您需要名为keychain
的ssh-agent
的管理器
yum安装钥匙串
如果不在官方RHEL仓库中,您可以从RPM forge存储库获取它。 测试启动新用户会话并手动将密钥加载到ssh-agent。 假设您生成的密钥名为id_dsa,位于〜/ .ssh / dir内。
$ssh-add ~/.ssh/id_dsa
但是,这仍然可能无法解决您的浏览器问题,因为这是apache用户的不同用户会话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.