簡體   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