ข้อความแสดงข้อผิดพลาด GitHub - การอนุญาตถูกปฏิเสธ (publickey)


701

มีใครเห็นข้อผิดพลาดนี้และรู้ว่าต้องทำอย่างไร

ฉันใช้เทอร์มินัลฉันอยู่ในรูทที่เก็บ GitHub มีอยู่และฉันไม่รู้จะทำอย่างไร

> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.


2
คำถามที่คล้ายกัน: stackoverflow.com/questions/16074832/…
JMoran

1
อาจเป็นปัญหาการอนุญาตกับ. ssh และกุญแจ authoirzed Ssh ค่อนข้างเข้มงวดแล้ว google it
K - ความเป็นพิษใน SO กำลังเพิ่มขึ้น


เหมือนคำตอบ @bdukes' นี่เป็นคำสั่งใช้ https และมันจะทำงาน, Windows ตัวอย่างเช่น: "PS C: \ XAMPP \ htdocs> คอมไพล์โคลนgithub.com/algolia/instant-search-demo.git "
Dung

คำตอบ:


664

GitHub ไม่สามารถตรวจสอบสิทธิ์คุณ ดังนั้นไม่ว่าคุณจะไม่ได้ตั้งค่าด้วยคีย์ SSH เนื่องจากคุณไม่ได้ตั้งค่าไว้ในเครื่องของคุณหรือรหัสของคุณไม่ได้เชื่อมโยงกับบัญชี GitHub

คุณยังสามารถใช้ HTTPS URL แทน SSH / git URL เพื่อหลีกเลี่ยงการจัดการกับคีย์ SSH นี่คือวิธีที่แนะนำ GitHub ของ

นอกจากนี้ GitHub มีหน้าช่วยเหลือสำหรับข้อผิดพลาดนั้นโดยเฉพาะและอธิบายรายละเอียดทุกอย่างที่คุณสามารถตรวจสอบได้


53
ข้อผิดพลาดนี้ไม่ได้ จำกัด เฉพาะกับ GitHub ฉันได้รับข้อผิดพลาดเดียวกันกับ BitBucket และฉันเกาหัวของฉันเป็นวิธีการแก้ไข ...
IgorGanapolsky

32
ส่วนช่วยเหลือกำลังใช้ssh -vT git@github.comจากหน้าวิธีใช้Githubเพื่อช่วยในการแก้ไขข้อบกพร่องที่ repo ของคุณใช้ ฉันแนะนำให้คุณเพิ่มเข้าไปในคำตอบของคุณ
MaximeBernard

25
upvote ของการใช้ HTTPS แทน SSL นั้นค่อนข้างน่าผิดหวัง SSH สะดวกกว่ามาก คำแนะนำจาก @MaximeBernard ด้านบนแก้ปัญหาให้ฉันได้: GIT ไม่ได้ดูที่ที่ถูกต้องสำหรับไดเรกทอรี. ssh การใช้ssh -vT git@github.comให้ข้อมูลมากมายว่าทำไมมันไม่ทำงาน
Christophe

1
ตามความคิดเห็นของฉันด้านบนตัวเลือกที่สามคือคำสั่งที่ถูกส่งจากบัญชีอื่นที่ไม่ใช่คำสั่งที่มีปุ่ม ssh (เช่นทำงานเป็นรูท)
David LeBauer

1
ดังที่ @ theapache64 พูดถึง: หากคุณใช้ Mac และได้สร้างคีย์ ssh "ssh-add" แล้วอาจเป็นสิ่งที่คุณพลาดไป ทำงานให้ฉัน
อิมเมจดิจิตอล

78

คุณไม่สร้างการตั้งค่าไฟล์ของคุณ ~ / .ssh ไดเรกทอรี? ควรมีเนื้อหาเช่นนี้

Host github.com 
 IdentityFile ~/.ssh/github_rsa

สมมติว่าคุณสร้างคีย์ ssh ชื่อgithub_rsa

และอัปโหลดไปยัง GitHub ...

หมายเหตุ: คุณต้องปฏิบัติตามวิธีการกำหนดค่านี้อย่างชัดเจนหากคุณมีคีย์มากกว่า 1 คีย์ (2 คีย์ขึ้นไป) ในไดเรกทอรี ~ / .ssh / หากคุณไม่ได้ระบุคีย์ด้วยวิธีนี้คีย์แรกตามลำดับจะถูกใช้และใช้สำหรับการตรวจสอบสิทธิ์ GitHub ดังนั้นจึงขึ้นอยู่กับชื่อไฟล์คีย์แล้ว


1
ฉันได้สร้าง ssh-key และสามารถทำงานได้ดีในบางครั้งโดยไม่มีปัญหา วันหนึ่งที่ดี (อาจเป็นหลังจากรีสตาร์ท) มันหยุดทำงานในขณะที่กุญแจยังคงอยู่ที่ github และในระบบท้องถิ่นของฉัน ฉันเพิ่ม "ไฟล์กำหนดค่า" โดยระบุคีย์แมปไปยังโดเมน รายละเอียดที่ให้ไว้ข้างต้นใน igor-ganapolsky-answer มันใช้งานได้ดี!
ปรสิต

3
นี่เป็นการแก้ปัญหาของฉัน! ขอบคุณมาก! แต่ฉันมีคำถาม ก่อนที่จะใช้วิธีการของคุณssh -T git@github.comตอบสนองอย่างถูกต้องในขณะที่git push -u origin masterให้ข้อผิดพลาดเช่นเดียวกับในคำถาม ทำไมฉันถึงสามารถเชื่อมต่อได้อย่างถูกต้อง แต่ไม่สามารถผลักดันมันหรือดึงข้อมูลจากมันได้?
Eden Harder

@EdenHarder ฉันกำลังเผชิญกับปัญหาเดียวกัน คุณพบคำตอบหรือยัง
Vreddhi Bhat

64

ฉันรู้เกี่ยวกับปัญหานี้ หลังจากเพิ่มคีย์ ssh ให้เพิ่มคุณคีย์ ssh ไปยังตัวแทน ssh ด้วย (จากเอกสารอย่างเป็นทางการ)

ssh-agent -s
ssh-add ~/.ssh/id_rsa

หลังจากทั้งหมดทำงานได้ดี git สามารถดูรหัสที่ถูกต้องก่อนที่จะทำไม่ได้


5
นายอำเภอ! ทำงานบน MacOS X. ของฉัน
stillatmylinux

9
ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบความถูกต้องของคุณ
Mona Jalal

ลองใช้วิธีนี้: evalssh-agent -s
Vincent acent

@MonaJalal ใช้ssh-add ~/.ssh/github_rsa
Anirban Nag 'tintinmj'

สมบูรณ์ มันทำงานอยู่ ขอบคุณ. 👌
Erkam KUCET

62

คุณต้องสร้างคีย์ SSH (ถ้าคุณไม่มี) และเชื่อมโยงกุญแจสาธารณะกับบัญชี Github ของคุณ ดูเอกสารของตัวเอง Github ของ


2
ขอบคุณสำหรับสิ่งนี้ ... ฉันได้รับคีย์ SSH ที่สร้างจาก GitHub คำสั่งใดที่จะใช้เชื่อมโยงทั้งสองในเทอร์มินัลตอนนี้ ขอบคุณ!
webwrks

2
ไม่มีคำสั่งเทอร์มินัลสำหรับสิ่งนั้น ดูขั้นตอนที่ 4 ในเอกสารที่ฉันเชื่อมโยงในคำตอบของฉัน
cdhowie

ฉันโคลนที่เก็บข้อมูลโดยใช้ HTTPS ฉันจำเป็นต้องสร้างคีย์ SSH ในกรณีนี้หรือไม่?
Pabitra Dash

@PabitraDash ไม่ HTTPS ไม่ใช้คีย์ SSH
cdhowie

51

เรื่องนี้เกิดขึ้นกับฉัน ด้วยเหตุผลบางอย่างที่ต้นกำเนิดของฉันสับสนโดยที่ฉันไม่รู้ตัว:

ตรวจสอบว่าการตั้งค่าของคุณยังถูกต้องหรือไม่

git remote -v

URL จะต้องมีลักษณะคล้าย ssh: //git@github.com/YourDirectory/YourProject.git; หากคุณไม่เห็น git@github.com ให้ใช้

git remote set-url origin git://github.com/YourDirectory/YourProject.git

เพื่อตั้งค่าให้ถูกต้อง หรือคุณสามารถใช้แอป github เพื่อตรวจสอบและตั้งค่า url ที่เก็บระยะไกลหลักในแผงการตั้งค่าของที่เก็บเฉพาะของคุณ


9
ระวัง URL ด้วย พวกเขาต่างกันระหว่าง https กับ ssh และโพสต์ในหน้านี้ไม่ได้ทำให้ชัดเจน แต่ละโครงการ git มีไฟล์. git / config ในไดเรกทอรีรากของโครงการ มีคุณสามารถตั้งค่าข้อมูลระยะไกลและสาขา การตั้งค่ารีโมตสำหรับ https: url = github.com/<yourGitUserName>/<yourGitProject>.gitขณะที่ git + ssh: url = git@github.com: <yourGitUserName> / <yourGitProject> .git สิทธิ์พับลิกคีย์ถูกปฏิเสธข้อผิดพลาดซึ่งอาจไม่ใช่ข้อผิดพลาดที่ชัดเจนมาก
darKoram

สำหรับกรณีของฉันในขั้นตอนสุดท้ายก็ใช้งานได้ในส่วน: git remote set-url origin github.com/your_directory/your_project.git
rld

19

สมมติว่าคุณกำลังเชื่อมต่อ GitHub ผ่าน SSH คุณสามารถเรียกใช้คำสั่งด้านล่างเพื่อยืนยันสิ่งนี้

$git config --get remote.origin.url

หากคุณได้รับผลลัพธ์มีรูปแบบดังต่อไปนี้ git@github.com: xxx / xxx.github.com.git คุณควรทำดังนี้

สร้างคีย์ SSH (หรือใช้คีย์ที่มีอยู่) หากคุณมีคุณเพียงแค่เพิ่มคีย์ของคุณลงใน ssh-agent (ขั้นตอนที่ 2) และไปยังบัญชี GitHub ของคุณ (ขั้นตอนที่ 3)

ด้านล่างนี้สำหรับผู้ที่ไม่มีคีย์ SSH

ขั้นตอนที่ 1 การสร้างคู่คีย์สาธารณะ / ส่วนตัว rsa

$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

คุณจะถูกขอให้ยืนยันตำแหน่งที่จะบันทึกคีย์ SSH และวลีรหัสผ่านที่คุณต้องการใช้

ขั้นตอนที่ 2เพิ่มรหัสของคุณลงใน ssh-agent

  • ตรวจสอบให้แน่ใจว่าเปิดใช้งาน ssh-agent แล้ว

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

  • เพิ่มคีย์ SSH ของคุณไปยัง ssh-agent:

    $ssh-add ~/.ssh/id_rsa

ขั้นตอนที่ 3เพิ่มรหัส SSH ของคุณในบัญชีของคุณ

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

จากนั้นเพิ่มคีย์ที่คัดลอกไปยัง GitHub

ไปที่การตั้งค่า -> คีย์ SSH (แถบด้านข้างการตั้งค่าส่วนตัว) -> เพิ่มคีย์ SSH -> กรอกแบบฟอร์ม (กุญแจอยู่บนคลิปบอร์ดของคุณเพียงใช้ ctrl + v) -> เพิ่มคีย์

หลังจากทำตามขั้นตอนข้างต้นแล้วคุณควรแก้ปัญหาการอนุญาต

การเชื่อมโยงอ้างอิง: คีย์ผลิต SSH


วิธีนี้ใช้ได้กับ Ubuntu, $ ssh-add /root/.ssh/id_rsa
Feras

สิ่งนี้ได้แก้ไขความยุ่งเหยิงแปลก ๆ ในสภาพแวดล้อมของฉันเช่นกันการดัดแปลงอย่างหนึ่งที่ฉันอยากจะแนะนำก็คือหลีกเลี่ยงการพึ่งพา xclip เพียงใช้cat ~/.ssh/id_rsa.pub
Pogrindis

19

ก่อนอื่นเราต้องตรวจสอบคีย์ ssh ที่มีอยู่ในคอมพิวเตอร์ของคุณ เปิด Terminal และเรียกใช้:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

และนั่นจะแสดงรายการไฟล์ในไดเรกทอรี. ssh ของคุณ

และในที่สุดก็ขึ้นอยู่กับสิ่งที่คุณเห็น (ในกรณีของฉันคือ):

 github_rsa  github_rsa.pub known_hosts

เพียงลองตั้งค่า RSA ของคุณและหวังว่าจะช่วยแก้ปัญหา "ต้นกำเนิด push git" ของคุณ

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

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


ฉันต้องคัดลอกSHAผลลัพธ์ไปยัง GitHub จากคำสั่งนี้หรือไม่?
IgorGanapolsky

ไม่เพียงดำเนินการ "ssh-keygen -lf ~ / .ssh / <YOUR_GITHUB_RSA_FILE.pub>"
d1jhoni1b

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

$ ssh-keygen -lf ~ / .ssh / github_rsa.pub /home/mona/.ssh/github_rsa.pub: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Mona Jalal

"ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" หมายความว่าคุณไม่มีชื่อไฟล์หรือพา ธ นั้น ... คุณจะได้อะไรเมื่อเรียกใช้ ls -al ~ / .ssh?
d1jhoni1b

14

ฉันได้รับข้อผิดพลาดนี้ ปรากฎว่าฉันเพิ่งอัพเกรด OSX เป็น Sierra และรหัสเก่าของฉันไม่ได้ลงทะเบียนอีกต่อไป

ตอนแรกฉันคิดว่ามันเป็น"การอัพเกรดเป็น macOS Sierra จะแบ่งคีย์ SSH ของคุณและล็อคคุณออกจากเซิร์ฟเวอร์ของคุณเอง"

แต่ฉันได้เลี่ยงที่หนึ่ง ปรากฎว่าฉันต้องลงทะเบียนกุญแจที่มีอยู่ของฉันอีกครั้ง:

ssh-add -K

และพิมพ์ข้อความรหัสผ่าน ... เสร็จแล้ว!


2
ปัญหาเดียวกันทำงานได้สำหรับฉัน: `ssh-add -K ~ / .ssh / id_rsa '
mvladk

11

ทางออกอื่น:

สร้างคีย์ SSH ssh-keygen -t rsa -C "your_email@example.com"ชนิด สิ่งนี้จะสร้างทั้งไฟล์ id_rsa และ id_rsa.pub

เพิ่ม id_rsa ไปยังรายการ ssh บนเครื่องคอมพิวเตอร์: ssh-add ~/.ssh/id_rsa.

หลังจากสร้างคีย์รับ pubkey โดยใช้:

cat ~/.ssh/id_rsa.pub 

คุณจะได้รับสิ่งที่ชอบ:

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com

คัดลอกคีย์นี้ (ค่า) และไปที่ github.com และภายใต้การตั้งค่า (คีย์ ssh และ pgp) เพิ่มกุญแจสาธารณะของคุณ


10

ในกรณีที่คุณไม่ได้เข้าถึงที่เก็บข้อมูลของคุณเองหรือการโคลนภายในที่เก็บแบบโคลน (ใช้คำสั่ง "git submodule ... " บางคำสั่ง):

ในโฮมไดเร็กทอรีของที่เก็บของคุณ:

$ ls -a

1. เปิด ".godmodules"และคุณจะพบสิ่งนี้:

[submodule "XXX"]
    path = XXX
    url = git@github.com:YYY/XXX.git

เปลี่ยนบรรทัดสุดท้ายเป็นHTTPSของที่เก็บที่คุณต้องดึง:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

บันทึก ".gitmodules"และเรียกใช้คำสั่งสำหรับ submodules และ ".git" จะได้รับการอัปเดต

2. เปิด ".git"ไปที่ไฟล์ "config" แล้วคุณจะพบสิ่งต่อไปนี้:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = git@github.com:YYY/XXX.git

เปลี่ยนบรรทัดสุดท้ายเป็นHTTPSของที่เก็บที่คุณต้องดึง:

    url = https://github.com/YYY/XXX.git

ดังนั้นในกรณีนี้ปัญหาหลักก็คือกับ url HTTPS ของที่เก็บใด ๆ สามารถพบได้ที่ด้านบนของหน้าพื้นที่เก็บข้อมูล


9

สิ่งนี้ใช้ได้กับฉัน:

1- ลบต้นกำเนิดทั้งหมด

git remote rm origin  

(เปรียบเทียบhttps://www.kernel.org/pub/software/scm/git/docs/git-remote.html )

* ระยะไกล: "จัดการชุดของที่เก็บ (" รีโมต ") ที่มีสาขาที่คุณติดตาม

* rm: "ลบชื่อระยะไกลสาขาติดตามระยะไกลทั้งหมดและการตั้งค่าการกำหนดค่าสำหรับระยะไกลจะถูกลบ"

2- ตรวจสอบทั้งหมดถูกลบ:

git remote -v  

3- เพิ่มต้นฉบับต้นกำเนิดใหม่

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git

นั่นคือคนทั้งหมด!


1
นั่นเป็นประโยชน์โดยคำสั่งเหล่านี้มันเริ่มขอให้ฉันชื่อผู้ใช้และรหัสผ่านบัญชี Github หลังจากนั้นฉันสามารถกดลิงค์ Github ตามประเภทใน terminal: git push -u Origin master
Noha Salah

8

ตรวจสอบให้แน่ใจว่าssh-add -lแสดงลายนิ้วมือของคีย์ SSH ที่มีอยู่ในรายการคีย์ SSH ในบัญชี Github ของคุณ

หากผลลัพธ์ว่างเปล่า แต่คุณรู้ว่าคุณมีคีย์ SSH ส่วนตัวที่ใช้งานได้กับบัญชี Github ของคุณให้เรียกใช้ssh-addบนคีย์นี้ (พบ~/.sshได้มันมีชื่อid_rsaตามค่าเริ่มต้นดังนั้นคุณน่าจะเรียกใช้ssh-add id_rsa)

มิฉะนั้นทำตามคำแนะนำเหล่านี้เพื่อสร้างคู่คีย์ SSH


8

ฉันใช้ GitHub ก่อนหน้านี้สำหรับโครงการ php ของฉัน ขณะใช้ github ฉันใช้ ssh แทน https ฉันตั้งค่าเครื่องของฉันแบบนั้นและทุกครั้งที่ฉันส่งและส่งรหัสมันจะถามรหัสผ่านคีย์ rsa ของฉัน

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

ฉันจะแก้ไขมันได้อย่างไร

  1. เรียกใช้คำสั่งนี้เพื่อบอกคอมไพล์ของฉันให้ใช้ https แทน ssh:

    git config --global url."https://".insteadOf git://
    
  2. ลบรีโมตออกหากมี

    git remote rm origin
    
  3. ทำซ้ำทุกอย่างจากgit initไปที่git pushและใช้งานได้!

PS: ฉันยังไม่ได้ติดตั้ง ssh จากเครื่องของฉันในระหว่างกระบวนการดีบั๊กโดยคิดว่าการลบมันจะแก้ไขปัญหาได้ ใช่ฉันรู้!! :)


ฉันไม่คิดว่ามันเป็นความคิดที่ดีที่จะชี้ผู้คนไปยัง https เมื่อ ssh ควรทำงานเช่นกัน นอกจากนี้สิ่งนี้ไม่น่าจะทำงานกับคนที่อยู่เบื้องหลังพร็อกซีขององค์กร
Igor Stoppa

8

แก้ไขปัญหาหากคุณเปลี่ยนการเข้าถึง ssh เป็น https เพื่อเข้าถึงที่เก็บข้อมูลระยะไกล:

git remote set-url origin https_link_to_repository

git push -u origin master

5

ฉันคิดว่าฉันมีคำตอบที่ดีที่สุดสำหรับคุณแอป git ของคุณอ่าน id_rsa.pub ในไดเรกทอรีผู้ใช้รูท

/home/root/.ssh/id_rsa.pub

นั่นเป็นสาเหตุที่ทำให้คีย์ของคุณใน /home/your_username/.ssh/id_rsa.pub ไม่สามารถอ่านได้โดย git ดังนั้นคุณต้องสร้างคีย์ใน /home/root/.ssh/

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

จากนั้นคัดลอกรหัสในบัญชี GitHub ของคุณ มันใช้งานได้สำหรับฉัน คุณสามารถลอง


ให้ฉันได้คำตอบที่ฉันต้องการ ฉันวิ่งโคลนด้วย sudo จากนิสัยดังนั้นมันจึงมองหาข้อมูลประจำตัวที่ไม่ถูกต้อง เอา sudo ออกและโคลนของฉันก็วิ่งได้ดี
Taekahn

4

หากคุณได้สร้างคีย์ SSH แล้วและยังคงได้รับข้อผิดพลาดเป็นเพราะคุณต้องให้สิทธิ์ผู้ใช้ในการอ่านและเขียนไปยังโฟลเดอร์ที่คุณโคลน sudo chmod 777 <your_folder_name_here>"การทำเช่นนี้ แน่นอนนี่คือหลังจากที่คุณได้สร้างคีย์ SSH และคุณยังคงได้รับข้อผิดพลาดนี้ หวังว่านี่จะช่วยผู้ใช้ในอนาคต

แก้ไข

เพื่อเพิ่มไปยังผู้ดูแลระบบนี้ใช้ใน Windows หากคุณกำลังใช้ git bash


นี้. สิ่งนี้ยังสามารถทำให้เกิดปัญหา
KevinO

1
นี่เป็นปัญหาของฉัน แต่ฉันจะไม่แนะนำให้ตั้งค่าการอนุญาต 777 ในโฟลเดอร์ ในกรณีของฉันผู้ใช้รูทเป็นเจ้าของโฟลเดอร์และฉันต้องให้สิทธิ์การเข้าถึงบัญชีผู้ใช้ที่ไม่ใช่รูทของฉัน ฉันทำสิ่งนี้เป็นอย่างดี:sudo chown -R $USER:$USER <your_folder_name_here>
เดวิด

@ David ฉันขอแนะนำเช่นกัน 777 ค่อนข้างแฮ็คและไม่ปลอดภัย
เควิน

3

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

จากเทอร์มินัลให้เรียกใช้: ssh-add ~/.ssh/id_rsa

ป้อนรหัสผ่านระบบของคุณและควรใช้งานได้


3

ฉันต้องการเพิ่มสิ่งที่ค้นพบของฉัน:

หากคุณกำลังใช้GitBashแล้วให้แน่ใจว่าคีย์ SSH ~/.ssh/id_rsaถูกเก็บไว้ใน

โดยค่าเริ่มต้นGitBashค้นหา~/.ssh/id_rsaเป็นเส้นทางเริ่มต้นสำหรับคีย์ SSH

แม้แต่ชื่อไฟล์ก็มีความid_rsaสำคัญ หากคุณบันทึกคีย์ SSH ของคุณในชื่อไฟล์หรือพา ธ อื่นจะทำให้เกิดPermission Denied(publickey)ข้อผิดพลาด


3

ตกลงมีวิธีแก้ปัญหานี้น้อยมากบางคนอาจถูกกล่าวถึงแล้ว แต่เพื่อให้พวกเขาอยู่ด้วยกัน:

  • ตรวจสอบให้แน่ใจว่ามีคีย์ของคุณอยู่ตามค่าเริ่มต้น ~ / .ssh / โฟลเดอร์อื่นเช่น id.rsa และ id.rsa.pub

  • ตรวจสอบว่าคีย์มีสิทธิ์ที่ถูกต้องคุณสามารถเรียกใช้ chmod:

    chmod 600 ~ / .ssh / id_rsa

    chmod 644 ~ / .ssh / id_rsa.pub

  • ตรวจสอบให้แน่ใจว่าเนื้อหาของคีย์สาธารณะของคุณ (id_rsa.pub) ตรงกับที่อัปโหลดในการกำหนดค่าที่เก็บระยะไกล

  • สุดท้ายแก้ไขปัญหาด้วยตัวแทนssh : ssh-add

ข้อมูลเพิ่มเติมบางอย่าง: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html


ฉันคัดลอกคีย์ ssh จากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งโดยใช้ไดรฟ์ USB ที่จัดรูปแบบเป็น FAT32 ที่เปลี่ยนสิทธิ์ของไฟล์ บน Ubuntu ฉันเคยถูกถามรหัสผ่าน SSH โดยอัตโนมัติเมื่อจำเป็น แต่นั่นไม่เกิดขึ้นอย่างเงียบ ๆ จนกว่าฉันจะวิ่งตามที่chmodคุณอธิบาย ขอบคุณ
lydell

1

หากคุณใช้ GitHub สำหรับ Mac UI ให้ตรวจสอบการตั้งค่าเพื่อให้แน่ใจว่าคุณเข้าสู่ระบบแล้ว


1

ฉันได้รับข้อผิดพลาดเดียวกันระหว่าง 'git push' ในด้านลูกค้าฉันมีสองแหล่งกำเนิดและต้นแบบ ฉันลบออกแล้วมันใช้งานได้ดี


1

คุณสามารถใช้ Https url เพื่อเข้าสู่ระบบ

ฉันเดาว่าคุณกำลังพยายามเข้าสู่ระบบด้วย ssh url เมื่อคุณพูดว่า git push ถ้ามันเป็นการถามรหัสผ่านเท่านั้นพิจารณาว่าคุณกำลังเชื่อมต่อผ่าน ssh.better คุณใช้ http url


1

นอกจากนี้ในอูบุนตูแม้ว่ามีคีย์ SSH ที่ป้อนในการตั้งค่าใน BitBucket แล้ว แต่ฉันก็พบปัญหานี้ เหตุผลก็คือฉันลองทำสิ่งต่อไปนี้:

sudo git push origin master

ไม่แน่ใจว่าทำไม แต่ได้แก้ไขโดยใช้

git push origin master

ไม่ใช้ sudo


1

สำหรับฉันฉันลองแล้ว -

eval "$(ssh-agent -s)"

จากนั้นฉันก็วิ่ง

ssh-add ~/.ssh/path-to-the-keyfile

และสำหรับการสร้างคีย์คุณสามารถเรียกใช้

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

สิ่งนี้จะสร้างคู่ของคีย์ (สาธารณะและส่วนตัว)

คุณสามารถจัดเก็บคีย์นี้เพื่อ github เพื่ออ่านเพิ่มเติมนี้การเพิ่มคีย์ SSH ใหม่ไปยังบัญชี GitHub ของคุณ

ฉันหวังว่ามันจะช่วยให้ผู้อื่น :)


1

ฉันมีปัญหาคล้ายกับ @Batman อย่างไรก็ตามเนื่องจากฉันใช้งานภายใต้ / usr / local / src / projectname การทำงานโดยไม่มี sudo จึงไม่ใช่ตัวเลือก

เพียงเพิ่ม แฟล็ก-Eเพื่อแสดงสภาพแวดล้อม (~ / .ssh / พา ธ ของคุณ)

$ sudo -E git clone git@your_repo

จาก man sudo:

-E, --preserve-env หมายถึงนโยบายความปลอดภัยที่ผู้ใช้ต้องการให้บริการตัวแปรสภาพแวดล้อมที่มีอยู่ นโยบายความปลอดภัยอาจส่งคืนข้อผิดพลาดหากผู้ใช้ไม่มีสิทธิ์ในการรักษาสิ่งแวดล้อม


1

เมื่อสถานการณ์ที่จะเกิดขึ้นคือเมื่อคุณทำตามคำแนะนำ GitHub หลังจากที่คุณสร้างที่เก็บของคุณ Git จะแนะนำให้คุณเพิ่มรีโมทของคุณในลักษณะนี้

git remote add origin git@github.com:<user>/<project>.git

แทนที่สิ่งที่อยู่ใน <> ด้วยค่าที่เกี่ยวข้องกับบัญชีของคุณ

ทางออกคือการลบ.gitคำต่อท้าย เพิ่มรีโมตดังนี้:

git remote add origin git@github.com:<user>/<project>


1

TL; DR

ในการ~/.ssh/configวาง

PubkeyAcceptedKeyTypes=+ssh-dss

สถานการณ์สมมติ ถ้าคุณใช้ openSSH> 7 เช่นพูดบน touchbar MacBook Pro ก็เป็นได้ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

คุณยังมี Mac รุ่นเก่าที่มีรหัสของคุณที่คุณวางไว้บน Github เป็นไปได้ว่าใช้รหัส id_dsa OpenSSH v7 ไม่ได้ใส่ค่าเริ่มต้นในการใช้คีย์ DSA เหล่านี้ (ซึ่งรวมถึงสิ่งนี้ssh-dss) แต่คุณยังสามารถเพิ่มกลับได้โดยใส่รหัสต่อไปนี้ลงใน~/.ssh/config

PubkeyAcceptedKeyTypes=+ssh-dss

ที่มาสำหรับฉันคือจดหมายข่าวของ Gentooนี้

อย่างน้อยตอนนี้คุณสามารถใช้ GitHub แล้วแก้ไขคีย์ของคุณเป็น RSA


1

ฉันพบหน้านี้ในขณะที่ค้นหาวิธีแก้ไขปัญหาข้อความแสดงข้อผิดพลาดที่คล้ายกันโดยใช้git pullบนโฮสต์ระยะไกล:

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

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

โปรดทราบว่าในกรณีของฉันgit pullทำงานได้ดีกับเครื่องในท้องถิ่นของฉัน (นั่นคือมีการตั้งค่าคีย์ ssh และเพิ่มลงในบัญชี GitHub เป็นต้น) ฉันแก้ไขปัญหาโดยเพิ่มลง~/.ssh/configในแล็ปท็อปของฉัน:

Host *
     ForwardAgent yes

จากนั้นฉันเชื่อมต่อกับโฮสต์ระยะไกลอีกครั้งด้วยssh -AY remote_hostnameและgit pullตอนนี้ทำงาน การเปลี่ยนแปลงในการกำหนดค่าช่วยให้สามารถส่งต่อ ssh keypair ของฉันจากเครื่องท้องถิ่นไปยังโฮสต์ใด ๆ -Aตัวเลือกที่จะsshเป็นจริงไปข้างหน้าในเซสชั่น SSH ว่า ดูรายละเอียดเพิ่มเติมได้ที่นี่


0

บางที ssh-agent ของคุณไม่ได้เปิดใช้งานคุณสามารถลองใช้ได้

  1. ดาวน์โหลด git

http://git-scm.com/

  1. ติดตั้ง

  2. เปิดใช้งาน ssh-agent

C: \ Program Files \ Git \ cmd

เริ่มต้นตัวแทน ssh


0

ไปที่แผงควบคุมบัญชี GitHub ค้นหาที่เก็บโครงการของคุณคลิกแท็บการตั้งค่า - ใต้ปุ่มปรับใช้คุณจะต้องเพิ่มคีย์ SSH ของคุณ เปิด Terminal และประเภท:

cat ~/.ssh/id_rsa.pub | pbcopy 

นี่จะเป็นการคัดลอกคีย์จากไฟล์ id_rsa.pub ของคุณ ดังนั้นเพียงกลับไปที่แผงควบคุม GitHub วางลงไปคลิกเพิ่มรหัสแล้วทำตามนั้น

โซลูชันเดียวกันนี้ใช้กับบัญชี Bitbucket

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