繁体   English   中英

通过PHP和SSH进行Git:拒绝对用户apache的ssh身份验证

[英]Git via PHP & SSH: ssh authentification of user apache denied

我有以下设置:CentOS 6.5,git(客户端),apache 2.2,运行测试站点等。目标是创建一个远程浏览器级别的访问以执行“ git pull”。 有一种使用PHP实现此类事物的通用方法。 可以说我有2个脚本,一个是php(被称为直接通过浏览器执行),另一个是shell脚本-分别是gitpull.php和gitpull.sh。

gitpull.php(与index.php在同一文件夹中)内容:

<?php
$message=shell_exec("/var/www/html/...PATH-TO-INDEX.PHP.../gitpull.sh 2>&1");
?>

gitpull.sh内容:

cd /var/www/html/...PATH-TO-FOLDER-WHERE-.GIT-WAS-INITIALIZED
git pull origin master:master

据我了解,通过调用php脚本,所有以下操作均应以“ apache”用户身份执行,因此我通过sudo -u apache ssh-keygen -t rsa创建了rsa密钥。 这两个键都在~/.ssh目录中(设置为可以访问它们),以及在/var/www副本(默认情况下为apache主文件夹,我这样做是为了避免混淆,以防apache仅从那里使用键) 。 我认为只要使用“ ssh-add”在sss中注册密钥,密钥的位置就没有关系。 Apache有权访问所有相关文件/文件夹。

我发现我的问题不在脚本中,所以我决定检查:

# ssh -T git@bitbucket.org

(效果很好,可以接受密钥),然后

# sudo -u apache ssh -T git@bitbucket.org

退货

Permission denied (publickey).

问题:我在设置中想念什么? 为什么apache无法通过其ssh密钥识别? 如果我在工作细节上写错了,那么为了让apache将它们与ssh一起使用,密钥必须在哪里? 它能以某种自定义方式帮助脚本化ssh访问吗?

您是否在您的bitbucket帐户中添加了ssh公钥?

为了调试该问题,我运行了:sudo -u www-data php git.php

该答案通过显示如何调试来提供帮助! https://stackoverflow.com/a/13097666/2614353

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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