Gitlab ไม่ทำงานกับ SSH Keys


11

ฉันมีปัญหากับ Gitlab ผมเคยแนะนำต่อไปนี้การติดตั้งและกำหนดค่า Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md การติดตั้งดูเหมือนจะเป็นไปด้วยดีและทั้งหมด ดูเหมือนว่าเว็บแอปพลิเคชันจะทำงานได้ดี อย่างไรก็ตามฉันไม่สามารถโคลนดึงกดโดยพื้นฐานแล้วฉันไม่สามารถใช้ Gitlab ได้ ฉันเห็นข้อผิดพลาด 403 กับ HTTP และปฏิเสธการอนุญาตเมื่อพยายามโคลน SSH

ฉันมั่นใจได้ว่าคีย์ส่วนตัวของฉันได้รับการติดตั้งอย่างถูกต้องทั้งบน Windows และ OS X ฉันสามารถเห็นกุญแจสาธารณะบนเซิร์ฟเวอร์ ฉันเพิ่มสิ่งต่อไปนี้ในไฟล์ปรับแต่งของฉันใน ~ / .ssh.config

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

นี่คือสิ่งที่ฉันเห็นใน / var / log / secure

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

/var/log/messageไม่ได้มีบทบาทเมื่อฉันพยายามใช้คอมไพล์หรือ SSH

ฉันไม่แน่ใจว่าจะไปจากที่นี่ ข้อเสนอแนะใด ๆ

ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย SSH โดยใช้ชื่อผู้ใช้ git คำแนะนำที่ฉันใช้ไม่ได้สร้างรหัสผ่านสำหรับผู้ใช้ git และระบุว่าผู้ใช้ไม่สามารถใช้ในการเข้าสู่ระบบได้


คุณสามารถ SSH ไปยังเซิร์ฟเวอร์ Git ในฐานะผู้ใช้ 'git' ได้หรือไม่? คุณสามารถลองเพิ่มพารามิเตอร์ '-vvv' เพื่อให้ได้ผลลัพธ์เพิ่มเติมเกี่ยวกับสาเหตุที่ปิดการเชื่อมต่อได้หรือไม่ นอกจากนี้ยังควรตรวจสอบไฟล์ / var / log / secure และ / var / log / Messages เพื่อดูว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่
jaseeey

ไม่ได้ตั้งค่าพับลิกคีย์บนไคลเอ็นต์ - คุณต้องแน่ใจว่าไพรเวตคีย์ของคุณอยู่บนไคลเอ็นต์ของคุณ พับลิกคีย์จะไปที่เซิร์ฟเวอร์
EEAA

อัปเดตคำถามของฉัน หวังว่าจะช่วยได้
greyfox

คำตอบ:


10

หากคุณได้โหลดคีย์ส่วนตัวของคุณบนไคลเอนต์ของคุณแล้วดูเหมือนว่านี่อาจเป็นปัญหาสิทธิ์ในไดเรกทอรีผู้ใช้ 'git' และไดเรกทอรี. ssh

โปรดลองเปลี่ยนไดเรกทอรี / home / git ของคุณเป็นรูปแบบ 0711:

chmod 0711 /home/git

ตรวจสอบให้แน่ใจว่าไดเร็กทอรี /home/git/.ssh มีรูปแบบ 0700:

chmod 0700 /home/git/.ssh

ตรวจสอบให้แน่ใจว่าไฟล์ /home/git/.ssh/authorized_keys มีรูปแบบ 0600:

chmod 0600 /home/git/.ssh/authorized_keys

แทนที่ / home / git ด้วยสิ่งที่ไดเรกทอรีบ้านของคุณสำหรับผู้ใช้ 'git' คือถ้ามันแตกต่างกันในการสอน หากไม่ใช่การอนุญาตโปรดให้ความคิดเห็นและเราจะดูว่ามีปัญหาอะไรอีกบ้าง


นั่นอาจเป็นปัญหา ฉันรู้ว่าสามารถโคลนโดยใช้ git clone git @ {ชื่อโฮสต์}: {workspace} / {repository} บน Mac ของฉัน น่าเสียดายที่ฉันออกจากเครื่อง Windows ของฉันในที่ทำงานดังนั้นฉันจะต้องลองอีกครั้งในวันพรุ่งนี้ การรับรองความถูกต้องของคีย์สาธารณะ / ส่วนตัวไม่ทำงานผ่าน HTTP กับ Gitlab หรือไม่ ฉันรู้สึกว่า Github ทำงานได้ แต่ฉันผิดไปเลย
greyfox

การพิสูจน์ตัวตนคีย์สาธารณะ / ไพรเวตทำงานได้กับ SSH เท่านั้น หากคุณใช้ HTTP คุณจะต้องใช้ชื่อผู้ใช้และรหัสผ่านของคุณเพื่อดำเนินการใด ๆ หากคุณใช้ Git เวอร์ชันใหม่เช่น v1.8 คุณควรขอชื่อผู้ใช้และรหัสผ่าน Git รุ่นที่เก่ากว่าไม่ทำเช่นนี้ดังนั้นคุณต้องเพิ่มชื่อผู้ใช้และรหัสผ่านของคุณแบบอินไลน์ของรีโมต (เช่นhttps://username:password@git.server.com/repo.git)
jaseeey

Ahhhh ที่เหมาะสมมากขึ้นในขณะนี้ แอพ GitHub สำหรับ Windows จะเก็บข้อมูลรับรองไว้หรือไม่ ขอบคุณมากสำหรับความช่วยเหลือ!
greyfox

ฉันไม่ได้ใช้แอปพลิเคชั่น GitHub Windows มากนัก แต่ฉันคิดว่าจากหน่วยความจำมันต้องมีการลงชื่อเข้าใช้เมื่อคุณเปิดมันดังนั้นฉันจะบอกว่าการจัดเก็บข้อมูลรับรองการเข้าถึงเพื่อช่วยให้คุณไม่ต้องปวดหัว
jaseeey

1

ตรวจสอบว่าคุณมีเพียงหนึ่งระเบียนสำหรับกุญแจสาธารณะของคุณ (ซึ่งนำเข้าผ่านหน้าเว็บ) /home/git/.ssh/authorized_keysและกุญแจนี้มีคำนำหน้าและชื่อของ gitlab กล่าวอีกนัยหนึ่งถ้าคุณเพิ่มคีย์เดียวกันด้วยตนเองก่อนติดตั้ง gitlab ให้ลบออก


คุณสามารถมีหลายคีย์ในการมีและคุณจะสามารถที่จะเข้าสู่ระบบที่จัดไว้ให้คีย์ส่วนตัวของคุณสามารถจับคู่ ...
jaseeey

@ Jason ฉันเพิ่งแก้ไขเพื่ออธิบายอย่างแม่นยำมากขึ้น
sinm

ขอบคุณนี่คือสิ่งนี้สำหรับฉัน ฉันใส่คีย์ ssh ของฉันด้วยตนเองก่อนที่จะใช้ Gitlab เพื่อเพิ่มคีย์และคีย์ที่ซ้ำกันทำให้เกิดปัญหา
6ft Dan

1

ฉันยังแนะนำให้ตรวจสอบว่าผู้ใช้มีสิทธิ์ที่เหมาะสมในการโคลน / ดึง / ดันใน gitlab ฉันใช้เวลามากเกินไปในการตรวจสอบการกำหนดค่า ssh / https เมื่อสาเหตุของปัญหาคือผู้ใช้ใน gitlab มีสิทธิ์ไม่เพียงพอ ...


1

ในสถานการณ์ของฉันฉันติดตั้ง gitlab ผ่านแพ็คเกจ FreeBSD Gitlab SSH ไม่ทำงาน สาเหตุของสิ่งนี้คือไดเรกทอรีภายในบ้านที่ไม่ถูกต้องสำหรับ git: (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

ฉันเปลี่ยนสิ่งนี้เป็น:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

เหตุการณ์นี้อาจเกิดขึ้นได้หากโฮสต์มี '-' ในชื่อ (แม้ว่าจะถูกกฎหมายตามRFC 952 )

ssh แจ้งให้ฉันใส่รหัสผ่านสำหรับโฮสต์ใด ๆ ที่มี '-' อยู่ในชื่อ ดูเหมือนว่าจะเป็นปัญหาที่เกิดขึ้นกับการแยกวิเคราะห์ไฟล์การกำหนดค่า ssh อย่างหมดจดเนื่องจากการเพิ่มนามแฝงใน ~ / .ssh / config (และการใช้นามแฝงนั้นใน URL ระยะไกล git ของฉัน) แก้ไขปัญหาได้

กล่าวอีกนัยหนึ่งให้ลองทำสิ่งต่อไปนี้ใน C: / Users / {ชื่อผู้ใช้} /. ssh / config

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

และตำแหน่งที่คุณมีรีโมตของฟอร์ม

origin  git@a-b.domain:repo-name.git

ลบออกจากนั้นเพิ่มอีกครั้งโดยใช้แบบฟอร์ม

origin  git@a:repo-name.git

1

หากคุณกำลังใช้ตัวแปรสภาพแวดล้อมเพื่อส่งผ่านคีย์คุณควร base64 เข้ารหัสมิฉะนั้นพวกเขาอาจจะล้มเหลวด้วยข้อผิดพลาดที่ขอรหัสผ่านของคุณ ซึ่งหมายความว่ากุญแจเสียหาย ถ้าคุณเห็น:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

จากนั้น base64 เข้ารหัสตัวแปร SSH_PRIVATE_KEY หากคุณใช้ OS X

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

จะเข้ารหัสและคัดลอกไปยังคลิปบอร์ดของคุณ ตอนนี้เปลี่ยนบรรทัดสคริปต์. gitlab-ci.yml เป็น

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

ปัญหาของฉันคือไฟล์ไพรเวตคีย์ id_rsa สร้างและบันทึกโดย puttygen มีรูปแบบที่แตกต่างจากที่สร้างขึ้นจากเครื่องอูบุนตู หลังจากที่ฉันสร้างคู่คีย์จากเครื่องอูบุนตูให้คัดลอกไฟล์เหล่านี้กลับไปที่เครื่อง Windows ภายใต้โฟลเดอร์% UserProfile% .ssh จากนั้นเพิ่มคีย์สาธารณะที่สร้างขึ้นใหม่ลงใน Gitlab ไม่อนุญาตให้ฉันปฏิเสธอีกต่อไป

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