"ERROR ที่มีชื่อเสียงของ Git: การอนุญาตให้. git ถูกปฏิเสธสำหรับผู้ใช้"


119

ฉันได้ลองใช้ googling แล้วและอ่านhttps://help.github.com/en/articles/connecting-to-github-with-sshและคำแนะนำต่างๆมากมาย ฉันไม่สามารถgit push -u origin masterหรือgit push origin master(คำสั่งเดียวกัน)

ฉันมีบัญชีคอมไพล์มาแล้วอย่างน้อย 2 ปี ฉันสามารถสร้าง repos และpush -u origin masterปรับแต่งบนแล็ปท็อปได้สำเร็จ แต่บนเดสก์ท็อปนี้ฉันมีปัญหา

นี่คือสิ่งที่ฉันลอง:

1.ฉันได้ตั้งค่าชื่อผู้ใช้คอมไพล์แล้ว

2.ฉันได้ตั้งค่าอีเมลผู้ใช้คอมไพล์แล้ว

3.ฉันได้อัปโหลดเนื้อหาของ /home/meder/.ssh/id_rsa.pub ไปยังหน้าบัญชีของ github ฉันได้ตรวจสอบแล้วว่าฉันไม่ได้วางช่องว่างใด ๆ

4.ฉันได้สร้าง ~ / .ssh / config ด้วยเนื้อหาเหล่านี้:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

ฉันได้ chmodded .ssh ถึง 700, id_rsa 600

5.ฉันได้เพิ่มจุดกำเนิดระยะไกลที่เหมาะสมโดยไม่ต้องพิมพ์ผิด :git remote add origin git@github.com:medero/cho.git

6.เพื่อยืนยัน # 5 นี่คือ. git / config ของฉัน ไดเร็กทอรีถูกต้องและไม่ใช่ไดเร็กทอรีอื่น:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:medero/cho.git

7. ssh git@github.com -vให้การตรวจสอบสิทธิ์ที่ประสบความสำเร็จแก่ฉัน

8.สิ่งที่แปลกประหลาดอย่างหนึ่งคือชื่อผู้ใช้ที่ทักทายฉันได้tต่อท้ายด้วย ชื่อผู้ใช้ GitHub ของฉันคือไม่mederomedert

สวัสดี mederot! คุณตรวจสอบสิทธิ์สำเร็จแล้ว แต่ GitHub ไม่มีการเข้าถึงเชลล์

9.ฉันไม่ได้อยู่เบื้องหลังพร็อกซีหรือไฟร์วอลล์

10.มีการนำเสนอคีย์นี่คือผลลัพธ์จาก-v:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11.นี่คือคำสั่งที่ฉันใช้

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin git@github.com:medero/cho.git
git push -u origin master

12.ฉันไม่ต้องการสร้างคีย์ SSH ใหม่

13.ถ้าฉัน git clone โดยใช้ ssh และทำการแก้ไขกระทำและ git push ฉันจะได้รับสิ่งเดียวกัน

14.นี่คือข้อผิดพลาดที่แท้จริง:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15.ฉันได้ตั้งค่าชื่อผู้ใช้ github และโทเค็น github ของฉันแล้ว:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token ตั้งค่าโทเค็น GitHub สำหรับอินสแตนซ์ git ทั้งหมดบนระบบ

16.ฉันยืนยันว่าชื่อผู้ใช้ github ของฉันไม่ใช่mederotและโทเค็น github ของฉันถูกต้องในหน้าบัญชีของฉัน (ตรวจสอบ 2 ตัวอักษรแรกและ 2 ตัวอักษรสุดท้าย)

17.เพื่อยืนยัน # 16, ~ / .gitconfig มี

[github]
    token = mytoken...
    user = medero

18.ฉันทำssh-key add ~/.ssh/id_rsaถ้าจำเป็นด้วยซ้ำ ...



ทฤษฎี:

ฉันสงสัยว่ามีบางอย่างที่คาวเพราะเมื่อฉันได้รับการรับรองความถูกต้อง ssh คำทักทายของผู้ใช้mederotไม่ใช่mederoซึ่งเป็นบัญชีของฉัน บางสิ่งในบัญชี github ของฉันอาจถูกแคชอย่างไม่ถูกต้องหรือไม่?

ฉันยังสงสัยว่ามีความแปลกประหลาดในการแคช ssh ในเครื่องเพราะถ้าฉันmv ~/.ssh/id_rsa KAKAและmv ~/.ssh/id_rsa.pub POOPOOทำssh git@github.com -vมันยังคงรับรองความถูกต้องของฉันและบอกว่ามันทำหน้าที่ /home/meder/.ssh/id_rsa ของฉันเมื่อฉันเปลี่ยนชื่อ! มันต้องแคช?!


ฉันใช้ "Github สำหรับ Windows" และมีปัญหาคล้ายกันนี้เมื่อสลับระหว่างบัญชี Github สองบัญชี นี่คือวิธีแก้ปัญหาของฉัน: stackoverflow.com/questions/18565876/…
Alisa

หากคุณต้องการผลักดันจาก 2 repos ในเครื่องที่แตกต่างกันไปยัง repo ระยะไกลต้นทางที่เกี่ยวข้องให้ตรวจสอบสิ่งนี้: stackoverflow.com/q/63291726/12033855
an4s911

คำตอบ:


35

ในขั้นตอนที่ 18 ฉันคิดว่าคุณหมายถึงssh-add ~/.ssh/id_rsa? ถ้าเป็นเช่นนั้นจะอธิบายสิ่งนี้:

ฉันยังสงสัยในความแปลกประหลาดของการแคช ssh ในเครื่องเพราะถ้าฉัน mv ~ / .ssh / id_rsa KAKA และ mv ~ / .ssh / id_rsa.pub POOPOO และทำ ssh git@github.com -v มันยังคงรับรองความถูกต้องของฉันและบอกว่ามันทำหน้าที่ /home/meder/.ssh/id_rsa ของฉันเมื่อฉันเปลี่ยนชื่อ?! มันต้องแคช?!

... เนื่องจากssh-agentกำลังแคชคีย์ของคุณ

หากคุณดู GitHub มีบัญชีmederot คุณแน่ใจหรือว่านี่ไม่เกี่ยวข้องกับคุณ? GitHub ไม่ควรอนุญาตให้เพิ่มคีย์สาธารณะ SSH เดียวกันลงในสองบัญชีเนื่องจากเมื่อคุณใช้git@github.com:...URL จะเป็นการระบุผู้ใช้ตามคีย์ SSH (ที่นี้ไม่ควรได้รับอนุญาตให้ได้รับการยืนยันที่นี่ .)

ดังนั้นฉันจึงสงสัย (ตามลำดับความเป็นไปได้ที่ลดลง) ว่าหนึ่งในกรณีต่อไปนี้คือ:

  1. คุณได้สร้างบัญชี mederot ไว้ก่อนหน้านี้และเพิ่มคีย์ SSH ของคุณเข้าไป
  2. มีคนอื่นได้รับสำเนาคีย์สาธารณะของคุณและเพิ่มลงในบัญชี mederot GitHub
  3. มีข้อผิดพลาดที่น่ากลัวใน GitHub

ถ้า 1 ไม่เป็นเช่นนั้นฉันจะรายงานเรื่องนี้กับ GitHub เพื่อให้พวกเขาตรวจสอบได้ประมาณ 2 หรือ 3

มากกว่า :

ssh-add -l ตรวจสอบว่ามีการระบุมากกว่าหนึ่งตัวหรือไม่ถ้าใช่ให้ลบออกโดย ssh-add -d "ไฟล์คีย์นั้น"


มาร์คช่วยได้มาก! สิ่งนี้แก้ไขให้ฉันเช่นกัน
Leachy Peachy

นี่คือมัน คุณช่วยฉันปวดหัวมาก ตอนนี้ฉันต้องจำไว้ว่าให้เรียกใช้ssh-add ...ทุกครั้งที่ฉันต้องการเปลี่ยนการเข้าสู่ระบบ github / ssh
Cerin

ด้วยเหตุผลบางอย่างssh-add -d <keyfile>ไม่ได้ผล (ลบไฟล์ tyhe ด้วยตนเอง) การแคชที่คุณกล่าวถึงจะต้องโหลดซ้ำด้วยตนเอง อย่างไร?
not2qubit

ssh-add -d-> "ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบสิทธิ์ของคุณ"
alex

ssh-addเป็นบิตที่มันสำหรับฉัน ขอบคุณ!
rayryeng

160

หลังจาก Googling ไม่กี่วันฉันพบว่านี่เป็นคำถามเดียวที่คล้ายกับสถานการณ์ของฉัน

อย่างไรก็ตามฉันเพิ่งแก้ปัญหา! ดังนั้นฉันจึงให้คำตอบที่นี่เพื่อช่วยทุกคนที่ค้นหาปัญหานี้

นี่คือสิ่งที่ฉันทำ:

  1. เปิด"Keychain Access.app" (คุณสามารถค้นหาได้ใน Spotlight หรือ LaunchPad)

  2. เลือก"รายการทั้งหมด"ในหมวดหมู่

  3. ค้นหา"git"

  4. ลบของเก่าและของแปลกทุกชิ้น

  5. ลองกดอีกครั้งและมันก็ใช้งานได้


17
ยกนิ้วให้เพื่อน คุณคือฮีโร่
Prince Bansal

1
ใช่ในที่สุดหลังจากต่อสู้กับคีย์ SSH นับไม่ถ้วนนี่คือคำตอบที่ได้ผล! ดูเหมือนว่าการเข้าถึง Mac และ https จะใช้พวงกุญแจ บ้า.
Patrick Chu

1
BLESS YOU IVE พยายามแก้ปัญหานี้สำหรับสัปดาห์
Jon Hendershot

1
มีลักษณะที่เป็นประโยชน์มาก old & strangeแต่ไม่มีความชัดเจนในสิ่งที่เป็น ฉันกำลังจะทำของหนักขึ้น .. ?
geotheory

1
@geotheory old & strangeสิ่งต่างๆหมายถึงรายการวันที่เก่าและอีเมลหรือชื่อผู้ใช้ที่ไม่ถูกต้อง Date Modifiedคุณสามารถจัดเรียงตารางโดย
Alice Chan

92

หากปัญหาเกิดขึ้นบน windows ให้ลบข้อมูลประจำตัวออกจากประวัติ Windows

  • ไปที่ Credential Manager
  • ไปที่ Windows Credentials
  • ลบรายการภายใต้ข้อมูลรับรองทั่วไป
  • ลองเชื่อมต่ออีกครั้งคราวนี้ควรแจ้งชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง

ใส่คำอธิบายภาพที่นี่ ใส่คำอธิบายภาพที่นี่

ลบข้อมูลรับรองออกจากคอมไพล์


2
สมบูรณ์ ฉันได้รับ 403 เข้าถึงด้วยบัญชีที่ฉันไม่ได้ใช้อีกต่อไป ตอนนี้แก้ไขแล้ว.
Anton Epikhin

1
การลบข้อมูลรับรอง github.com เท่านั้นก็เพียงพอแล้วสำหรับฉัน
Bart De Boeck

และคุณสามารถเปลี่ยนชื่อผู้ใช้และอะไรก็ได้ที่นั่น นั่นคือวิธีที่
WesternGun

อันที่จริงสิ่งนี้ใช้ได้ผลสำหรับฉันเช่นกัน แต่ฉันจะทำอย่างไรถ้าฉันมี 2 บัญชีที่แตกต่างกัน
an4s911

22

บน Mac หากคุณมีการเข้าสู่ระบบ GitHub หลายครั้งและไม่ได้ใช้ SSH ให้บังคับล็อกอินที่ถูกต้องโดยใช้:

git remote set-url origin https://username@github.com/username/repo-name.git

นอกจากนี้ยังใช้งานได้หากคุณมีปัญหาในการส่งไปยังที่เก็บส่วนตัว


1
ขอบคุณสิ่งนี้ใช้ได้ผลสำหรับฉัน มันแจ้งให้ฉันใส่รหัสผ่านและฉันสามารถกดได้หลังจากที่ฉันให้รหัสผ่านแล้ว ชื่นชมมาก!
พิกเซล

... แต่สิ่งนี้ไม่สามารถแก้ปัญหาสำหรับฉันใน Windows เฉพาะบน Mac
พิกเซล

... แต่ @Fahid แนะนำในด้านบนเพื่อล้างข้อมูลรับรองใน Windows ช่วย
พิกเซล

คุณคือฮีโร่
Vaibhav

นี่คือคำตอบที่ถูกต้องหากเราหลายโครงการ github ซึ่งเป็นของบัญชีที่แตกต่างกัน
Gangadhar JANNU

14

มันเกิดจากความขัดแย้ง

ล้างคีย์ทั้งหมดจาก ssh-agent

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

เพิ่มคีย์ github ssh

ssh-add   ~/.ssh/github

ตอนนี้ควรใช้งานได้แล้ว


3
ยังssh-add -Dลบข้อมูลประจำตัวทั้งหมดซึ่งมีประโยชน์หากตัวแทนเข้าสู่สถานะที่ไม่ถูกต้อง
แซม

6

ฉันใช้ Mac และปัญหาได้รับการแก้ไขโดยการลบบันทึก github จากแอปการเข้าถึงพวงกุญแจ: นี่คือสิ่งที่ฉันทำ:

  1. เปิด "Keychain Access.app" (คุณสามารถค้นหาได้ใน Spotlight หรือLaunchPad)
  2. เลือก "รายการทั้งหมด" ในหมวดหมู่
  3. ค้นหา "git"
  4. ลบทุกรายการที่เก่าและแปลกลองกดอีกครั้งและมันก็ใช้งานได้

ขั้นตอนข้างต้นคัดลอกมาจาก @spyar เพื่อความสะดวก


6

ฉันพบว่าวิธีแก้ปัญหาเหมือนกับที่ @spyar ให้ซึ่งเป็นแอปKeychain Access ที่เก็บชื่อผู้ใช้เก่าไว้

มี 2 ​​วิธีแก้ไขสำหรับสถานการณ์นี้:

  1. ลบข้อมูลในการเข้าถึงพวงกุญแจโดย
    • เปิดแอพKeychain Access
    • ค้นหาgithub
    • ลบข้อมูลรับรองที่เกี่ยวข้อง

หรือ

  1. ถ้าคุณใช้ต้องการใช้คีย์ SSH คุณเพียงแค่เปลี่ยน URL Repo ของคุณจาก https

https://github.com/username/repo.git

เข้าไป

git@github.com: ชื่อผู้ใช้ / repo.git

หวังว่านี่จะช่วยได้


2

ฉันเพิ่งพบปัญหานี้ใน repo เก่าบนเครื่องของฉันที่ถูกผลักโดยใช้ https ขั้นตอนที่ 5 และ 6 แก้ไขปัญหาของฉันโดยการตั้งค่า url ระยะไกลสำหรับ repo ของฉันใหม่จากการใช้ https url ไปยัง ssh url

การตรวจสอบรีโมทใช้ https url

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

จากนั้นตั้งค่าต้นทางใหม่เพื่อใช้ ssh url

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

กำลังตรวจสอบรีโมตใหม่

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

สามารถทำได้สำเร็จแล้ว git push -u origin

ฉันยังไม่แน่ใจว่าฉันจะเปลี่ยนการตั้งค่าใดที่อาจทำให้การกดล้มเหลวเมื่อรีโมตเป็น https แต่นี่เป็นวิธีแก้ปัญหาของฉัน


ข้อผิดพลาด: การอนุญาตให้ unrealcv / synthetic-computer-vision.git ถูกปฏิเสธต่อ monajalal ร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล โปรดตรวจสอบว่าคุณมีสิทธิ์การเข้าถึงที่ถูกต้องและมีที่เก็บอยู่
Mona Jalal

1

ฉันมีปัญหาเดียวกับคุณ หลังจากใช้ Google เป็นเวลานานฉันพบว่าข้อผิดพลาดของฉันเกิดจากผู้ใช้หลายคนที่เพิ่มคีย์เดียวกันในบัญชีของตน

ดังนั้นนี่คือวิธีแก้ปัญหาของฉัน: ลบ ssh-key ของผู้ใช้ที่ไม่ถูกต้อง (ฉันสามารถทำได้เพราะผู้ใช้ที่ไม่ถูกต้องก็เป็นบัญชีของฉันด้วย) หากผู้ใช้ที่ไม่ถูกต้องไม่ใช่บัญชีของคุณคุณอาจต้องเปลี่ยนคีย์ ssh แต่ฉันไม่คิดว่าจะเกิดขึ้น

และฉันคิดว่าปัญหาของคุณอาจเกิดจากข้อผิดพลาดในการพิมพ์ชื่อบัญชีของคุณผิด


0

ปัญหานี้เกิดจาก:

หากคุณใช้ mac / linux และกำลังใช้ 'ControlMaster' ใน ~ / .ssh / config ของคุณอาจมีกระบวนการหลักควบคุม ssh ทำงานอยู่

หากต้องการค้นหาให้เรียกใช้:

ps aux | grep '\[mux\]'

และฆ่าคนที่เกี่ยวข้อง


0

ฉันเจอสิ่งนี้เช่นกันสิ่งที่ทำให้เกิดสิ่งนี้สำหรับฉันคือในขณะที่โคลน repo ฉันกำลังผลักดันการเปลี่ยนแปลงของฉันฉันหยิบ URL โคลนจากแท็บที่ไม่ระบุตัวตนโดยไม่ต้องลงชื่อเข้าใช้ (ฉันยังไม่รู้ว่าจะมีผลอย่างไร) ด้วยเหตุผลบางประการทำให้คอมไพล์เลือกบัญชีผู้ใช้อื่น เมื่อฉันลองอีกครั้งจากหน้าลงชื่อเข้าใช้ที่ถูกต้องมันก็ใช้ได้เหมือนปกติสำหรับฉัน


0

ฉันพบข้อผิดพลาดนี้เมื่อใช้ Travis CI เพื่อปรับใช้เนื้อหาซึ่งเกี่ยวข้องกับการผลักดันการแก้ไขไปยังที่เก็บ

ในที่สุดฉันก็แก้ไขปัญหาโดยการอัปเดตโทเค็นการเข้าถึงส่วนบุคคลของ GitHub ที่เชื่อมโยงกับบัญชี Travis ด้วยpublic_repoสิทธิ์การเข้าถึงขอบเขต:

เลือก <code> public_repo </code>

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