繁体   English   中英

来自Bitbucket服务器的Git pull

[英]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调用。

  1. .sh脚本:

     #!/bin/sh git pull 
  2. 和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命令失败; 为什么?

您需要名为keychainssh-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM