GitHub: การอนุญาตถูกปฏิเสธ (publickey) ร้ายแรง: ปลายระยะไกลวางสายโดยไม่คาดคิด


197

ฉันได้ทำตามคำแนะนำด้านล่างเพื่ออัพโหลดโครงการแล้ว

การตั้งค่าทั่วโลก:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email tirenga@gmail.com
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:tirenga/tirenga.git
  git push origin master

แต่ฉันได้รับข้อผิดพลาดนี้:

ปฏิเสธการอนุญาต (publickey) ร้ายแรง: ปลายระยะไกลวางสายโดยไม่คาดคิด

คำตอบ:


24

สำหรับฉันปัญหาคือการดำเนินการของโคลนผ่าน sudo

หากคุณโคลนไปยังไดเรกทอรีที่คุณมีสิทธิ์ผู้ใช้ (/ home / user / git) มันจะทำงานได้ดี

(คำอธิบาย: การรันคำสั่งเป็น superuser จะไม่ทำงานกับพับลิกคีย์เดียวกันกับการรันคำสั่งในฐานะผู้ใช้ดังนั้น Github จึงปฏิเสธการเชื่อมต่อ)

โซลูชันนี้ต้องมีการตั้งค่าคีย์ SSH แล้ว: https://help.github.com/articles/generating-ssh-keys


1
วิธีนี้ดูเหมือนจะใกล้เคียงกับสิ่งที่โพสต์แล้วโดย learner_19
Erik

125

ฉันต้องเพิ่มกุญแจสาธารณะของฉันเพื่อ GitHub https://help.github.com/articles/generating-ssh-keys


3
ในกรณีที่คุณใช้งานเครื่อง linux การคัดลอกเนื้อหาของไฟล์ id_rsa.pub อาจทำได้ยากหากคุณใช้ emacs หรือ nano ลองคัดลอกด้วยโปรแกรมแก้ไขข้อความ (Notepad, TextEdit หรือ gedit จะทำได้ดี) หากคุณไม่มีสิ่งเหล่านี้คุณสามารถใช้เสียงเรียกเข้าได้
Gokul NK

4
@GokulNK ทางเลือกอื่นคือใช้ xclip ตามที่หน้าแนะนำ
w4etwetewtwet

7
cat ~/.ssh/id_rsa.pubอาจเป็นตัวเลือก? : p
torr

คุณสามารถใช้pbcopy < ~/.ssh/id_rsa.pubใน OS X แล้ววาง ( cmd+v) ในหน้า Github
user3648895

28

ใช่มันเป็นปัญหากุญแจสาธารณะ ฉันเป็นผู้ใช้windowsและหน้าเว็บด้านล่างช่วยฉันแก้ปัญหานี้ได้

http://help.github.com/win-set-up-git/

แม่นยำยิ่งขึ้นลิงค์นี้จะมีประโยชน์

https://help.github.com/articles/error-permission-denied-publickey


57
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Lix

28

หลังจากคุณสร้างคู่คีย์ RSA แล้วคุณต้องเพิ่มลงใน SSH โดยใช้:

ssh-add ~/.ssh/id_rsa

หรือที่ใดก็ตามที่คุณสร้างคู่คีย์ rsa ของคุณ


ช่วยชีวิต! คุณโดนเล็บที่หัว ขอบคุณ
Tash Pemhiwa

ตกลงสิ่งสำคัญคือการตรวจสอบก่อนว่า ssh- ตัวแทนกำลังทำงานอยู่ (เอกสารของ GitHub มีหนึ่งทำ) และไม่ว่าจะมีการเพิ่มคีย์ในพวงกุญแจของมัน สิ่งอื่นที่ควรค่าแก่การตรวจสอบเพราะอาจทำให้ไม่สามารถใช้คีย์ได้แม้ว่าจะอยู่ในรูปแบบของเอเจนต์ ssh-agent ก็เป็นโหมดการเข้าถึงที่ถูกต้องสำหรับไพรเวตคีย์: ควรเป็น 0600 ( chmod 600 ~/.ssh/id_rsaโดยทั่วไป)
chikamichi

18

พิมพ์คำสั่งต่อไปนี้โดยใช้ชื่อผู้ใช้และชื่อที่เก็บของคุณ:

git clone https://github.com/{user name}/{repo name}

ใน Ubuntu มันทำงานได้อย่างสมบูรณ์แบบ


ฉันคิดว่าจำเป็นต้องมีโปรโตคอล https เพื่อให้มีการเชื่อมต่อที่ปลอดภัยนี่คือสาเหตุที่ทำงานได้ Git @ github .. ไม่ปลอดภัยสำหรับเครื่อง
Timo

16

ฉันได้รับคำตอบหลังจากผ่านบทเรียนมาเป็นเวลานาน

ฉันติดตาม github tutorial ในลิงค์นี้ -> https://help.github.com/articles/error-permission-denied-publickeyและฉันสามารถเชื่อมต่อได้ในทุกขั้นตอน แต่เมื่อฉันพยายามgit push -u master masterฉันพบข้อผิดพลาดนี้:

ปฏิเสธการอนุญาต (publickey) ร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล

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

นั่นเป็นวิธีที่ฉันได้ซ่อมมัน !! ไปที่ไดเรกทอรีโครงการโดยใช้ Terminal และตรวจสอบ

$git remote -v

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

origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (push)

หากคุณกำลังใช้อะไรที่แตกต่างจากนั้นgit@github.comให้เปิดไฟล์ config ในไดเรกทอรี git โดยพิมพ์คำสั่ง:

vi .git/config

และกำหนดค่าสาย

[remote "origin"]

url = ssh://git@github.com/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/

สำหรับฉันมันใช้งานได้จริงโดยแทนที่ git@github.com ด้วย <myusername> @ github.com
Eduard Feicho

คำสั่ง "git remote-v" ไม่ใช่สิ่งที่ฉันเคยเห็นมาก่อนและมันกลายเป็นกุญแจสำคัญในการทำความเข้าใจว่าทำไมหนึ่งใน repos ของฉันทำงานในขณะที่อีกอันหนึ่งกำลังกลับมา "สิทธิ์ปฏิเสธ (publickey)" เมื่อฉัน ลองเรียกใช้ "git ls-remote" มีประโยชน์มาก. ขอบคุณ
Kevin

6

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


ปัญหาที่คล้ายกัน - ฉันลงชื่อเข้าใช้ในฐานะ root (และมองข้ามสิ่งนี้) ไม่ใช่ผู้ใช้จริงที่ติดตั้งด้วย SSH ไม่สามารถกระทำการใด ๆ ได้ เปลี่ยนกลับไปเป็นปัญหาที่แก้ไขโดยผู้ใช้!
Richard Hollis

1
ไม่มีคำอธิบายที่ชัดเจนเกี่ยวกับวิธีดำเนินการแก้ไขจริง
ริชาร์ด

ฉันไม่ควรจะต้องสะกดมันออกมานี่เป็นของคุณริชาร์ด! ฉันใช้บัญชีที่ไม่ใช่รูทของฉัน ฉันต้องดำเนินการคำสั่งจาก URL ช่วยเหลือ github ( help.github.com/articles/generating-ssh-keys#platform-linux ) ด้วยคำนำหน้า sudo
Dan Power

5

ฉันมีปัญหานี้ แต่ไม่มีวิธีแก้ปัญหาใดที่ได้ผล ฉันสามารถโคลนและดึงข้อมูล แต่ไม่สามารถผลักดันได้ ในที่สุดฉันก็พบว่าปัญหาอยู่ในตัวurlของฉัน.git/configก็ควรจะ:

git@github.com:<username>/<project>

(ไม่ใช่ssh://github.com/<username>/<project>.gitหรือhttps://github.com/<username>/<project>.git)


2
สำหรับการเชื่อมต่อ SSH git@ส่วนนั้นเป็นเวทย์มนตร์ ดังนั้นssh://git@github.com/username/project.gitยังใช้งานได้
อธิการ

.git มีความสำคัญจริงๆ วิธีนี้ใช้ได้ผลสมบูรณ์แบบ
Onur Göker

5

เนื่องจากไม่มีคำตอบที่นี่สำหรับฉันในที่สุดฉันก็ติดตามปัญหาของฉันที่เชื่อมต่อกับ Bitbucket (หรือ Github ไม่สำคัญในกรณีนี้) ด้วย ssh -vT git@bitbucket.org

ในกรณีของฉันความล้มเหลวเกิดจากการใช้คีย์ DSA แทน RSA และเห็นได้ชัดว่าไคลเอ็นต์ SSH ของฉันไม่อนุญาตอีกต่อไป

debug1: การข้ามคีย์ ssh-dss /c/Users/USER/.ssh/id_dsa สำหรับไม่ได้อยู่ใน PubkeyAcceptedKeyTypes

วิธีแก้ไขคือเพิ่มสิ่งนี้ใน. ssh / config:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

สิ่งนี้จะเพิ่มประเภทคีย์ ssh-dss อย่างหรูหราให้กับประเภทพับลิกคีย์ที่ยอมรับอยู่ทั้งหมดและหลังจากนี้เสร็จเรียบร้อยแล้วตอนนี้ git สามารถ ssh ลงใน Bitbucket ได้อย่างไม่มีปัญหา


นี่เป็นวิธีแก้ปัญหาสำหรับฉันบนเครื่อง Debian ที่ไม่เสถียรในเดือนธันวาคม 2558 ฉัน จำกัด มันไว้ที่ "Host bitbucket.org" เนื่องจากฉันมีรายการที่จะบังคับให้เลือกข้อมูลประจำตัวของฉัน
bitmusher

3

ปัญหาของฉันคือการที่ฉันพยายามที่จะให้ ssh สำคัญของฉันชื่อเฉพาะทุกครั้งที่ฉันป้อนssh-keygenใน terminal mac ของฉัน

ฉันจะแก้ไขปัญหานี้ได้โดยเพียงแค่ออกจากชื่อที่ว่า "SSH-keygen" สร้าง id_rsa= คุณจะจบลงด้วย 2 ปุ่มในโฟลเดอร์. ssh ของคุณบน mac id_rsaซึ่งเป็นกุญแจส่วนตัวของคุณและid_rsa.pubซึ่งเป็นกุญแจสาธารณะของคุณ จากนั้นฉันก็คัดลอกและบันทึกรหัสจากid_rsa.pubลงในการตั้งค่าบัญชี GitHub ของฉันและนั่นก็คือ แก้ไขปัญหา.


เหมือนกับฉัน. ชื่อการเว้นว่างช่วยแก้ไขปัญหาได้ ขอบคุณ
Berk

ผู้ชายคุณทำวันของฉัน! 2 สัปดาห์พร้อมคอนโซลเนื่องจากชื่อคีย์เฉพาะ! ขอบคุณ!
eilas

ดีใจที่มันช่วย! @eilas
paopao

ด้วยเหตุนี้การทำงานเป็นเพราะในระบบส่วนใหญ่คีย์ส่วนตัวเริ่มต้น ( ~/.ssh/id_rsa, ~/.ssh/id_dsaและ~/.ssh/identity) มีการเพิ่มโดยอัตโนมัติไปตรวจสอบตัวแทน SSH
maffo


2

การเพิ่มพับลิกคีย์เป็นโซลูชันสำหรับการสร้างคีย์ ssh: https://help.github.com/articles/generating-ssh-keys มีคำแนะนำทีละขั้นตอน

อย่างไรก็ตามปัญหายังคงมีอยู่หากไม่มีการสร้างรหัสในวิธีที่ถูกต้อง ฉันพบว่านี่เป็นลิงก์ที่มีประโยชน์ด้วยเช่นกัน: https://help.github.com/articles/error-permission-denied-publickey

ในกรณีของฉันปัญหาคือว่าฉันกำลังสร้าง ssh-key โดยไม่ใช้ sudo แต่เมื่อใช้คำสั่ง git ฉันต้องใช้ sudo ความคิดเห็นในลิงก์ด้านบน "ถ้าคุณสร้างคีย์ SSH โดยไม่ใช้ sudo เมื่อคุณพยายามใช้คำสั่งเช่น sudo git push คุณจะไม่ใช้คีย์ SSH ที่คุณสร้างขึ้น" ช่วยฉัน

ดังนั้นทางออกคือฉันต้องใช้ sudo กับทั้งคำสั่งสร้างคีย์และคำสั่ง git หรือสำหรับคนอื่น ๆ เมื่อพวกเขาไม่ต้องการ sudo ที่ใดก็ตามอย่าใช้มันในสองขั้นตอนใด ๆ (คำสั่งการสร้างคีย์และ git)


1

ฉันประสบปัญหาคล้ายกันเมื่อใช้งาน SSH หรือ Git Clone ใน Windows การค้นพบต่อไปนี้ช่วยในการแก้ปัญหาของฉัน:

  • เมื่อคุณเรียกใช้“ rhc setup” หรือวิธีการ ssh อื่น ๆ เพื่อสร้างคีย์ ssh มันจะสร้างไฟล์คีย์ส่วนตัว id_rsa ในโฟลเดอร์. ssh ในโฟลเดอร์บ้านของคุณค่าเริ่มต้นคือ C: \ User \ UserID
  • Git สำหรับ windows มีโฟลเดอร์. ssh ของตัวเองในไดเรกทอรีการติดตั้ง เมื่อคุณเรียกใช้ git / ssh มันจะค้นหาไฟล์คีย์ส่วนตัว id_rsa ในโฟลเดอร์นี้
  • แก้ไขปัญหาโดยการคัดลอก id_rsa จากโฟลเดอร์โฮม. ssh ไปยังโฟลเดอร์. ssh ในไดเรกทอรีการติดตั้ง git

นอกจากนี้ฉันคิดว่ามีวิธีการ "บอก" คอมไพล์เพื่อใช้โฟลเดอร์. ssh เริ่มต้นในโฟลเดอร์บ้าน แต่ยังคงต้องคิดออกว่า


1

สำหรับฉันมันใช้งานได้เช่นนี้:

ใน GitHub ฉันเปลี่ยนsshลิงค์เป็นhttpsแล้วให้คำสั่งต่อไปนี้:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master

0

ใช้ ubuntu บน windows store

ระบบย่อย windows สำหรับ linux

การกด git ของคุณจะทำงานในหลาย ๆ บัญชี


0

หากคุณใช้เครื่อง linux ให้ตรวจสอบ

  • คุณติดตั้ง Openssh หรือไม่
  • หากคุณมีรหัสสาธารณะที่มีอยู่มิฉะนั้นคุณจะต้องสร้างรหัสสาธารณะ
  • เป็นกุญแจสาธารณะของคุณเพิ่มไปยังบัญชี GitHub ของคุณ

การสร้างคีย์ SSH ใหม่และเพิ่มไปยังบัญชี Github ของฉันแก้ไขปัญหาของฉันได้ คุณสามารถดูรายละเอียดเพิ่มเติมได้ในหน้านี้ GitHelp


0

คุณสามารถลองเปลี่ยนประเภทการเชื่อมต่อเป็นสาขาจาก ssh เป็น https

  1. nano project_path/.git/config
  2. แทนที่git@github.com:username/repository.gitเป็นhttps://username@github.com/username/repository_name.git
  3. บันทึกไฟล์ctrl+o

หลังจากนั้นคุณสามารถลองgit pullโดยไม่ต้อง publickey



-1

วิธีที่รวดเร็วในการแก้ไขปัญหานี้หากคุณใช้ Mac คือการลงชื่อออกจากแอพ OSX และลงชื่อเข้าใช้อีกครั้ง




-3

ฉันลองวิธีแก้ปัญหาที่กล่าวถึงแล้วแต่ยังล้มเหลว ฉันพบโซลูชันที่ใช้งานได้กับฉันที่นี่ในที่สุด- ลบแล้วเพิ่มลิงก์ระยะไกลอีกครั้ง


-4

ฉันมีปัญหาเดียวกันบน windows ฉันเปลี่ยนจาก SSH เป็น HTTPS และใช้ Git PUSH

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

ประสบความสำเร็จ! หวังว่านี่จะช่วยได้


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