ข้อผิดพลาด Git:“ โปรดตรวจสอบว่าคุณมีสิทธิ์การเข้าถึงที่ถูกต้องและมีที่เก็บอยู่”


117

ฉันใช้ TortoiseGit บน Windows เมื่อฉันพยายามโคลนจากเมนูบริบทของ Windows Explorer มาตรฐานฉันได้รับข้อผิดพลาดนี้:

โปรดตรวจสอบว่าคุณมีสิทธิ์การเข้าถึงที่ถูกต้องและมีที่เก็บอยู่

อย่างแม่นยำยิ่งขึ้นภาพรวมของเทอร์มินัลมีดังต่อไปนี้:

git.exe clone --progress -v "git @ arobotdev: \ git \ AlfaRobot.git" "C: \ Work \ AlfaRobot" กำลัง

โคลนเป็น 'C: \ Work \ AlfaRobot' ...
ไม่อนุญาตโปรดลองอีกครั้ง
ปฏิเสธสิทธิ์โปรดลองอีกครั้ง
ปฏิเสธการอนุญาต (คีย์สาธารณะรหัสผ่าน)
ร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล

โปรดตรวจสอบว่าคุณมีสิทธิ์การเข้าถึงที่ถูกต้อง
และมีที่เก็บอยู่

git ไม่ได้ออกอย่างหมดจด (ออกรหัส 128) (21450 ms @ 19.09.2014 10:36:58)

ฉันควรทำอย่างไรเพื่อให้คอมไพล์ทำงานได้อย่างถูกต้อง


1
ลองสร้าง ssh keygen และเพิ่ม
Raja Simon

การใช้ Shell (หรือ Git Bash ใน Windows) เพื่อสร้างคีย์ SSH:$ ssh-keygen -t rsa -C "youremail@example.com"
Belter

มีข้อผิดพลาดนั้นหลังจากเปลี่ยน repos เป็นที่อยู่ git@github.com เพราะไม่ต้องพิมพ์รหัสผ่านตลอดเวลา ความผิดพลาดที่เกิดขึ้นจริงคือการลืมเพิ่มคีย์สาธารณะของฉันใน github
dasWesen

คำตอบ:


85

URL คอมไพล์ของคุณอาจมีการเปลี่ยนแปลง เปลี่ยน URL ในโลคัลไดเร็กทอรีโดยใช้คำสั่งต่อไปนี้

git remote set-url origin git@yourGitUrlHere

21
FYI github ใช้รูปแบบ url แล้ว:git remote set-url origin https://github.com/username/repository.git
RyPope

2
@RyPope คุณสามารถใช้โปรโตคอลใดก็ได้ทั้ง git (ssh) หรือ https ตามที่คุณต้องการ ตอนนี้ github มีทั้งโปรโตคอลgitและhttps.
วิษณุ

@ วิษณุอะไรXXXXXXX?
244boy

@RyPope แปลงเป็นคำตอบ
ishandutta2007

ฉันทำผิดพลาดบ่อยมาก ฉันคัดลอกโดยใช้คำสั่ง clip xclip -sel clip < ~/.ssh/id_rsa.pubแต่ในระหว่างการวางลงในช่องป้อนคีย์ github ฉันลบบรรทัดสุดท้ายโดยใช้ backspace ซึ่งเปลี่ยนคีย์สาธารณะ ดังนั้นให้คัดลอกและวางคีย์สาธารณะ ssh เสมอเหมือนเดิมโดยไม่ต้องลบบรรทัดสุดท้ายออก
Amreesh Tyagi

76

ปัญหานั้นอาจเกิดขึ้นกับ ssh-agent ของคุณคีย์ ssh ของคุณยังไม่ถูกเพิ่มด้วย ssh -agent คุณต้องทำตามขั้นตอนต่อไปนี้โดยใช้เทอร์มินัลของคุณ: -

  1. $ eval "$ (ssh-agent -s)"

    ตัวแทน pid 5867

  2. $ ssh-add

    ป้อนข้อความรหัสผ่านสำหรับ /home/you/.ssh/id_rsa: [] Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

แล้วมันจะได้ผล .. cheers J.


11
ยังคงได้รับข้อผิดพลาดเมื่อทำการโคลนนิ่ง:fatal: Could not read from remote repository.
IgorGanapolsky

ขอบคุณที่ใช้งานได้สำหรับฉันฉันได้สร้างคีย์ที่แตกต่างจาก id_rsa เริ่มต้นดังนั้นต้องทำเพิ่มเติมในคำสั่งด้านบน ssh-add -K ~ / .ssh / id_rsa_other_project
Nitesh

ใช่นี่จะไม่สามารถแก้ไขปัญหาใด ๆ ได้เลย การเพิ่มข้อมูลประจำตัวของคุณใน ssh จะหยุดเฉพาะสิ่งที่ขอรหัสผ่านใบรับรองของคุณทุกครั้ง
DMcCallum83

ไชโย ฉันวิ่งbrew updateไม่สำเร็จ เมื่อฉันวิ่งssh-addก่อนที่จะรันคำสั่งมันใช้งานได้ หวังว่าฉันจะไม่ทำสิ่งนี้ซ้ำตลอดเวลา
nyxee

ยังคงได้รับข้อผิดพลาด "การตรวจสอบคีย์โฮสต์ล้มเหลวร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล" แต่การเพิ่มโฮสต์ที่รู้จักได้รับการแก้ไขสำหรับฉัน: stackoverflow.com/questions/15214977/…
rickvian

46

พยายามใช้ HTTPS แทน SSH ในขณะทำการโคลนจาก GIT ใช้ URL นี้เพื่อทำการโคลนคุณสามารถใช้ Gitbase, Android Studio หรือเครื่องมืออื่น ๆ เพื่อโคลนสาขาได้ ป้อนคำอธิบายภาพที่นี่


37

สำหรับฉันมันเป็นเพราะไม่มีคีย์ SSH บนเครื่อง ตรวจสอบคีย์ SSH ในเครื่อง:

$ cat ~/.ssh/id_rsa.pub

นี่คือคีย์ SSH ของคุณ เพิ่มลงในคีย์ SSH ของคุณในที่เก็บ
ใน gitlab ไปที่

การตั้งค่าโปรไฟล์ -> คีย์ SSH

และเพิ่มคีย์


7
ฉันได้เพิ่มคีย์ตามที่คุณพูดถึงแล้วและยังได้รับข้อความปฏิเสธการเข้าถึง โปรดช่วย
Jet

26

ตอนนี้ Github ใช้รูปแบบ URL

git remote set-url origin https://github.com/username/repository.git


fatal: No such remote 'origin'. ฉันมีที่เก็บบน github และฉันเริ่มต้น git local repo บนเครื่องของฉันด้วยgit init.
Noah J. Standerson

@ NoahJ.Standerson คุณต้องตั้งค่า "ต้นทาง" จากระยะไกลบนพื้นที่เก็บข้อมูลในเครื่องของคุณด้วยgit remote add origin https://github.com/user/repo.git- ดูdocs.github.com/en/free-pro-team@latest/github/using-git/…
Deniz Genç

9

คุณกำลังพยายามโคลนที่เก็บบน ssh: git@arobotdev...และคีย์ SSH ของคุณไม่ได้รับการตั้งค่าอย่างถูกต้องบนเซิร์ฟเวอร์ มีสาเหตุหลายประการดังนี้

  1. คีย์สาธารณะของคุณอาจไม่ถูกบันทึกในไฟล์ Author_keys ของคอมไพล์ผู้ใช้
  2. ถ้า 1 ไม่เป็นจริงคีย์ส่วนตัวของคุณจะไม่ถูกบันทึกไว้ใน. ssh / โฟลเดอร์ของ HOMEDIR ของคุณ
  3. ตั้งค่าสิทธิ์ไม่ถูกต้อง

หากทั้ง 3 ข้อข้างต้นไม่เป็นความจริงข้อสรุปเดียวของฉันสามารถลอง: git@arobotdev:AlfaRobot.git สมมติว่า AlfaRobot.git อยู่ใน HOMEDIR ของผู้ใช้ git และไม่ได้อยู่ในโฟลเดอร์ที่เรียกว่า git ซึ่งอยู่ใน HOMEDIR ของ git ผู้ใช้


7

หากทำงานก่อนและหยุดทำงานกะทันหัน:

ปัญหานี้อาจเกิดขึ้นได้เนื่องจากบางครั้งssh-agentไม่เกิดขึ้นซ้ำ ๆ ในการรีบูต คุณควรตรวจสอบว่าssh-agentมีการเพิ่มคีย์ของคุณหรือไม่:

ssh-add -l -E md5

หากคุณได้รับผลลัพธ์เช่น:

The agent has no identities.

หมายความว่าทำssh-agentกุญแจของคุณหาย ในกรณีนี้คุณต้องเพิ่มรหัสประจำตัวอีกครั้ง สิ่งที่ต้องการ:

ssh-add ~/.ssh/git_rsa

ข้อผิดพลาดควรหายไปทันที!


2
สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันสร้าง ssh อื่นสำหรับบัญชีอื่นดังนั้นฉันจึงเพิ่มสิ่งที่ขาดหายไปgit_rsaในรายการ
จอห์น

ฉันดิ้นรนกับข้อผิดพลาดไม่พบ repo เป็นเวลา 2 ชั่วโมงหลังจากเปลี่ยนคีย์ git ssh คำสั่งนี้แก้ไขปัญหาของฉัน
Vaibhav Jain

5

rsa.pub (เช่นสร้างคีย์สาธารณะ) จำเป็นต้องเพิ่มในหน้า github >> settings >> ssh keys ตรวจสอบว่าคุณไม่ได้เพิ่มคีย์สาธารณะนี้ใน repository-settings >> deployment keys ในกรณีนี้ให้ลบรายการจากที่นี่และเพิ่มในตำแหน่งแรกที่กล่าวถึง

การตั้งค่าของคีย์ผับเอกชนในรายละเอียด

มันจะได้ผล!


4

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

  1. ไปที่การตั้งค่าการตั้งค่านักพัฒนาโทเค็นการเข้าถึงส่วนบุคคล
  2. สร้างโทเค็นใหม่
  3. สังเกตว่าโทเค็นมีไว้เพื่ออะไร
  4. ให้สิทธิ์การเข้าถึงrepo
  5. โคลน repo:
$ git clone https://<token>@github.com/<user>/<repo>.git

หากคุณได้โคลน repo แล้วคุณสามารถแก้ไขการตั้งค่าระยะไกลของคุณได้:

$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.

3
  1. สิ่งแรกที่คุณอาจต้องการยืนยันคือการเชื่อมต่ออินเทอร์เน็ต แม้ว่าปัญหาอินเทอร์เน็ตส่วนใหญ่จะบอกว่าไม่สามารถเข้าถึง repo ได้

  2. ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า ssh ทั้งในเครื่องและบน github ของคุณ ดูวิธีการ

  3. ตรวจสอบให้แน่ใจว่าคุณกำลังใช้ ssh git remote หากคุณโคลน https ให้ตั้งค่า url เป็น ssh url ด้วยคำสั่ง git นี้git remote set-url origin git@github.com:your-username/your-repo-name.git

  4. หากคุณตั้งค่า ssh อย่างถูกต้อง แต่เพิ่งหยุดทำงานให้ทำดังต่อไปนี้:

    • eval "$(ssh-agent -s)"
    • ssh-add

    หากคุณยังคงประสบปัญหาอยู่ให้ตรวจสอบให้แน่ใจว่าคุณไม่ได้ลบ ssh ออกจาก github ของคุณ ในกรณีที่ ssh ถูกลบออกจาก github คุณสามารถเพิ่มกลับได้ ใช้pbcopy < ~/.ssh/id_rsa.pubเพื่อคัดลอกคีย์ ssh จากนั้นไปที่การตั้งค่า github ssh แล้วเพิ่ม

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


3

ฉันมีปัญหานี้และฉันพบว่าระบบของฉันมีที่อยู่ DNS ไม่ถูกต้อง ตรวจสอบเครือข่ายของคุณและทดสอบด้วย

ssh -vvv git@bitbucket.org

และอ่านข้อความที่ส่งออก หากคุณเห็น "คุณสามารถใช้ git หรือ hg เพื่อเชื่อมต่อกับ Bitbucket" , ทุกอย่างโอเค.


สวัสดี @ อัลเบิร์ตฉันกำลังประสบปัญหาเดียวกัน แต่สำหรับ gitlab.com คุณจัดการแก้ไขปัญหาได้อย่างไร
abiratsis

@AlexandrosBiratsis ฉันแทนที่ DNS ด้วยที่อยู่อื่น ลองใช้ opendns หรือ google dns
albert

3

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

การส่งไปยัง Git เป็นครั้งแรก

>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

พารามิเตอร์ -C เป็นทางเลือกโดยจะให้ข้อคิดเห็นที่ท้ายคีย์ของคุณเพื่อแยกความแตกต่างจากพารามิเตอร์อื่น ๆ หากคุณมีหลายตัว สิ่งนี้จะสร้าง id_rsa (คีย์ส่วนตัวของคุณ) และ id_rsa.pub (คีย์สาธารณะของคุณ) เราส่งคีย์สาธารณะของเราไปรอบ ๆ และเก็บคีย์ส่วนตัวของเราไว้ - ดีส่วนตัว ตั้งค่าผู้ใช้ Gitlab คือที่คุณก็จะเพิ่มคุณคีย์สาธารณะในบัญชีของคุณช่วยให้เราไปจนผลักดัน

ในตำแหน่งโครงการของคุณ (ไดเรกทอรี) ให้ใช้คำสั่งด้านล่าง

git init

แปลงไดเร็กทอรีปัจจุบันเป็นที่เก็บ Git ซึ่งจะเพิ่มไดเร็กทอรีย่อย. git ไปยังไดเร็กทอรีปัจจุบันและทำให้สามารถเริ่มบันทึกการแก้ไขของโปรเจ็กต์ได้

กดใช้เส้นทาง https

git push --set-upstream https://gitlab.com/Account_User_Name/Your_Project_Name.git master

กดโดยใช้เส้นทาง ssh

git push --set-upstream git@gitlab.com:Account_User_Name/Your_project_Name.git master

- set-upstream:บอกเส้นทางสู่จุดเริ่มต้นของคอมไพล์ หาก Git ได้ผลักดันสาขาปัจจุบันของคุณก่อนหน้านี้ระบบจะจดจำว่าต้นทางอยู่ที่ใด

หลัก : นี่คือชื่อของสาขาที่ฉันต้องการส่งไปเมื่อเริ่มต้น


2

นี่คือวิธีแก้ปัญหานี้ ฉันใช้ Babun (mintty.exe) บน Win7 / 10 เมื่อฉันได้ลองใช้วิธีแก้ปัญหาหลายวิธีที่กล่าวมาแล้ว แต่ไม่มีวิธีใดได้ผล ฉันรู้ฉันอาจจะใช้เพียงตัวแทน SSH ผิด ... ดังนั้นผมจึงวิ่งไปหามันแสดงให้เห็นเส้นทางไปยังecho $GIT_SSH Plink.exeสิ่งที่ฉันคาดหวังจริงๆคือ OpenSSH

ดังนั้นฉันจึงเพิ่มหนึ่งซับใน~/.zshrcไฟล์

หมายเหตุ 1: คุณสามารถเรียกใช้งานได้โดยตรงใน babun
หมายเหตุ 2: หากคุณใช้ bash ไฟล์ config จะเป็น.bashrc

export GIT_SSH=$(which ssh)

และได้ผล!




2

ฉันใช้ Ubuntu

หลังจากอ่านคำตอบมากมายไม่มีคำตอบใดที่สามารถแก้ปัญหาได้แม้ว่าฉันจะเพิ่มคีย์ SSH ในบัญชีคอมไพล์ของฉันแล้วและลองทดสอบโดยใช้ssh -T git@gitlab.comมันก็บอกWelcome <my username>แต่มันก็ยังคงบอกฉันว่าฉันไม่มีสิทธิ์เข้าถึง จากนั้นฉันก็พบเหตุผล:

โดยปกติถ้าคุณไม่ใช่rootผู้ใช้คุณจะต้องรันด้วยsudoสำหรับทุกคำสั่ง git

เมื่อทำงานsudo git clone <SSH....>(ตัวอย่าง) ก็จะมีการดำเนินการภายใต้rootการอนุญาต แต่บังเอิญเมื่อสร้างคีย์ SSH ผมทำงานเป็นผู้ใช้ปกติและฉันบันทึกสำคัญในการมันจะช่วยแก้ปัญหาเส้นทางแน่นอน~/.ssh/id_rsa /home/username/.ssh/id_rsaและเมื่อทำsudo git clone ...มันให้มองหาคีย์ SSH ใน/root/.ssh/id_rsa

ทำไมฉันถึงมั่นใจในเรื่องนี้ หากต้องการดูว่า git ค้นหาคีย์ SSH ของคุณที่ไหน เรียกใช้คำสั่งนี้: sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>. มันจะแสดงให้คุณเห็นว่ามันค้นหาคีย์ SSH ของคุณที่ไหน

ดังนั้นวิธีแก้ปัญหาที่ฉันแนะนำคือ:

สร้างคีย์ SSH ของคุณใหม่ (ทำตามคำแนะนำนี้) แต่ให้รันsudo suในขั้นตอนแรกคุณก็จะสบายดี


ขอบคุณสำหรับสิ่งนี้. นี่เป็นสถานการณ์เดียวกันของฉัน
afolabiabass

1

สิ่งนี้อาจเกิดขึ้นได้หากคุณกำลังเชื่อมต่อกับที่เก็บ git ของคุณผ่าน VPN ตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับ VPN ซึ่งใช้เพื่อเข้าถึงทรัพยากรขององค์กรของคุณ


1

สำหรับฉันฉันมีปัญหากับ VPN ของ บริษัท หลังจากตัดการเชื่อมต่อใช้งานได้ดี

ตรวจสอบการเชื่อมต่อกับ github โดยใช้คำสั่ง ssh -vvvT git@github.com


0

ปัญหาอื่นอาจเกิดจากการเชื่อมต่ออินเทอร์เน็ตของคุณ อาจจะเห็นได้ชัด แต่ฉันใช้เวลาสองสามนาทีเพื่อดูว่า wifi ของฉันล่ม :)


1
ตามข้อความแสดงข้อผิดพลาดดูเหมือนว่าการเชื่อมต่ออินเทอร์เน็ตจะไม่เป็นปัญหาที่นี่
jbmusso

0

เช่นเดียวกับคำตอบอื่น ๆ การใช้httpsแทนsshคือคำตอบ

ฉันโพสต์คำตอบเพื่อให้ตัวอย่างที่เป็นรูปธรรมของวิธีแก้ปัญหาที่เป็นไปได้ ฉันแก้ไขปัญหานี้ด้วย bitbucket เมื่อฉันเปลี่ยน url ระยะไกลเป็น HTTPS ด้วยบรรทัดคำสั่งนี้:

git remote set-url origin <bitbucket_URL>

หลังจากนั้นฉันสามารถพุชเนื้อหาไปยังที่เก็บด้วยคำสั่งนี้:

git push -u origin --all

จากนั้นฉันก็สามารถใช้ Sourcetree


0

น่าแปลกที่ฉันได้รับข้อผิดพลาดนี้เพียง 1 ใน repos จำนวนมากของฉัน

ปัญหาของฉันคือหลังจากติดตั้ง GitHub Desktop ใหม่สำหรับ Windows โดยที่ GitHub for Win เก่าก่อนหน้านี้เก็บคีย์ไว้~/.ssh/github_rsaและ~/.ssh/github_rsa.pubตำแหน่งที่ GitHub for Win ใหม่คาดหวังไว้~/.ssh/id_rsaดังนั้นวิธีแก้ปัญหาจึงเปลี่ยนชื่อคีย์ส่วนตัวและคีย์สาธารณะที่มีอยู่:

~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub

หลังจากนั้นให้ฉันเข้าถึง repo อีกครั้งโดยไม่มีปัญหา




0

ฉันทำผิดพลาดบ่อยมาก ฉันคัดลอกโดยใช้คำสั่ง clip xclip -sel clip < ~/.ssh/id_rsa.pubแต่ในระหว่างการวางลงในช่องป้อนคีย์ github ฉันลบบรรทัดสุดท้ายโดยใช้ backspace ซึ่งเปลี่ยนคีย์สาธารณะ

ดังนั้นให้คัดลอกและวางคีย์สาธารณะ ssh เสมอเหมือนเดิมโดยไม่ต้องลบบรรทัดสุดท้ายออก


0

เปลี่ยนไปใช้ https ได้ผล ขั้นแรกให้เปลี่ยนเป็น https แทนปุ่ม ssh git ที่มาของ set-url ระยะไกล

จากนั้นจะขอชื่อผู้ใช้และรหัสผ่านของคอมไพล์


0

ฉันประสบปัญหานี้เมื่อฉันมีคีย์ RSA SSH ที่ไม่ถูกต้องและคีย์ ED25519 SSH ที่ถูกต้องบนเครื่องของฉัน ฉันเชื่อว่า Gitlab กำลังตรวจสอบคีย์ RSA ล้มเหลวและหยุดอยู่ที่นั่นก่อนตรวจสอบคีย์ ED25519

ฉันแก้ไขสิ่งนี้โดยการลบคีย์ทั้งสองที่ฉันมีในอุปกรณ์ของฉันและสร้าง RSA SSH ใหม่และให้ gitlab นั้นเกินไป


-1

สำหรับฉันมันให้ข้อผิดพลาดเดียวกันกับ:

โปรดตรวจสอบว่าคุณมีสิทธิ์การเข้าถึงที่ถูกต้องและมีที่เก็บอยู่

การแก้ไขอย่างรวดเร็วคือการกำจัดไฟล์ ~ / .ssh / config

mv config config_old && touch config

eval "$(ssh-agent -s)"

git clone your_repo



As it turned out to be the config file that was corrupt and configured with two ids
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.