Git push ให้ข้อผิดพลาด 403


0

ฉันได้ปฏิบัติตามขั้นตอนในการโฮสต์เซิร์ฟเวอร์ Git ภายใต้ Apache บน Windowsและทำให้ทุกอย่างทำงานได้ดี ฉันต้องการเพิ่มการรับรองความถูกต้องเบื้องต้นสำหรับการร้องขอพุชและทำการเปลี่ยนแปลงหลังจากแก้ไขปัญหาที่ให้ไว้ในhttpd.confไฟล์ของฉันและสร้างรหัสผ่านให้กับผู้ใช้

แต่เมื่อฉันพยายามที่จะผลักดันไปยังพื้นที่เก็บข้อมูลของฉัน (ใน localhost) ฉันได้รับข้อผิดพลาด 403 เหตุใดจึงเป็นเช่นนี้

ส่วนท้ายของhttpd.confไฟล์ของฉันอยู่ด้านล่าง

# Local git repository setup

# Git repository information
SetEnv GIT_PROJECT_ROOT C:/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}.(pack|idx)) | git-(upload|receive)-pack))$" \
"C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1"

# Allow cloning of repository without authentication
<Directory />
    Require all granted
</Directory>

# Authentication
<LocationMatch "^/.*/git-receive-pack$">
    Options +ExecCGI
    AuthType Basic
    AuthName "Git Login"
    AuthUserFile "C:/wamp/bin/apache/apache2.4.9/passwords/git_passwords"
    Require user alec
</LocationMatch>

นอกจากนี้ฉันได้เห็นคำถามเช่นนี้ทั้งใน SuperUser และ StackOverflow ถ้ามีคนบอกฉันได้ว่าไซต์ไหนเหมาะกับเว็บไซต์มากกว่านั้นจะดีมาก

แก้ไข

การตรวจสอบบันทึกข้อผิดพลาด apache พบข้อผิดพลาดนี้

AH01215: Service not enabled: 'receive-pack'

วิธีแก้ไขปัญหาใหม่การ เพิ่มSetEnv REMOTE_USER=$REDIRECT_REMOTE_USERช่วยให้ฉันสามารถผลักดันไปยัง repo แต่ฉันไม่เคยถามรหัสผ่าน ...

คำตอบ:


0

คุณมีการจับคู่สถานที่สำหรับแต่ไม่ได้สำหรับgit-receive-pack git-upload-packทำLocationMatchบล็อกเดียวกันสำหรับgit-upload-packเช่นกัน


เพิ่งลองเพิ่มบล็อกเดียวกันทันทีหลังจากgit-upload-packแทนที่git-receive-packแต่ยังได้รับข้อผิดพลาดเดิม ฉันเพิ่มบันทึกข้อผิดพลาด apache นั่นอธิบายได้หรือไม่
Kvothe

@Kvothe อืม .. ฉันจะตรวจสอบเพิ่มเติมในกรณีนี้
oldmud0

0

ในที่สุดก็มีสิ่งต่าง ๆ ทำงาน (แม้ว่าฉันจะไม่แน่ใจว่าทั้งหมด) การเปลี่ยนแปลงในhttpd.confไฟล์ของฉันจะสิ้นสุดในลักษณะนี้:

# Local git repository setup

# Git repository information
SetEnv GIT_PROJECT_ROOT C:/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}.(pack|idx)) | git-(upload|receive)-pack))$" \
"C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1"

# Allow cloning of repository without authentication
<Directory />
    Require all granted
</Directory>

# Authentication
<LocationMatch "^/.*/git-receive-pack$">
    Options +ExecCGI
    AuthType Basic
    AuthName "Git Login"
    AuthUserFile "C:/wamp/bin/apache/apache2.4.9/passwords/git_passwords"
    Require user alec
</LocationMatch>
<LocationMatch "^/.*/git-upload-pack$">
    Options +ExecCGI
    AuthType Basic
    AuthName "Git Login"
    AuthUserFile "C:/wamp/bin/apache/apache2.4.9/passwords/git_passwords"
    Require user alec
</LocationMatch>

ปรากฏว่าเป็นสายสำคัญ SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.