ปฏิเสธการอนุญาต GitHub: ตัวแทนเพิ่ม SSH ไม่มีตัวตน


148

นี่เป็นครั้งแรกที่ฉันเข้าถึง GitHub และฉันไม่เคยมีประสบการณ์ในการใช้คอนโซล ฉันใช้ MacBook โดยใช้ Bash เมื่อฉันพยายามเข้าถึง GitHub ฉันจะได้รับสิ่งนี้:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

ฉันได้ลองทำตามคำแนะนำในหน้า Github เกี่ยวกับการอนุญาตถูกปฏิเสธ

เมื่อฉันใช้ssh -vT git@github.comฉันได้รับต่อไปนี้:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

ถัดไปeval "$(ssh-agent -s)"ส่งคืน "Agent pid 2314" อย่างไรก็ตามssh-add -lส่งคืน "ตัวแทนไม่มีตัวตน"

และนั่นคือสิ่งที่ฉันติดอยู่


คุณมีคีย์ SSH สร้างอย่างไร คุณมีบัญชีอยู่ในบัญชี GitHub ของคุณหรือไม่? คุณมีกุญแจบนเครื่อง mac หรือไม่?
Etan Reisner

ฉันกำลังมองหาคำตอบสำหรับคำถามนั้น (ไม่คุ้นเคยกับระบบทั้งหมดนี้) และพบสิ่งนี้: mac.github.comแก้ไขปัญหาทั้งหมดของฉันได้ ฉันขอแนะนำอย่างยิ่ง ขอบคุณสำหรับการผลักดันในทิศทางที่ถูกต้อง Etan!
มืด

4
คุณอาจต้องการเพิ่มคำตอบสำหรับคำถามนี้ (โดยมีรายละเอียดเพิ่มเติมเกี่ยวกับวิธีแก้ไขปัญหาของคุณ) และยอมรับคำตอบของคุณ
Etan Reisner

ตกลงฉันได้ส่งคำตอบแล้ว ดังนั้นจะบอกฉันฉันสามารถยอมรับได้ใน 2 ชั่วโมง
มืด

คำตอบ:


194

รายละเอียดทั้งหมดในคำตอบนี้

โดยสรุปเมื่อssh-add -lผลตอบแทน“ตัวแทนไม่มีตัวตน” ก็หมายความว่าคีย์ที่ใช้โดยssh(เก็บไว้ในไฟล์เช่น~/.ssh/id_rsa, ~/.ssh/id_dsaฯลฯ ) จะหายไปอย่างใดอย่างหนึ่งที่พวกเขาจะไม่เป็นที่รู้จักssh-agentซึ่งเป็นตัวแทนการตรวจสอบหรือว่าสิทธิ์ของพวกเขา มีการตั้งค่าไม่ถูกต้อง (ตัวอย่างเช่นโลกที่เขียนได้)

ถ้าคีย์ของคุณจะหายไปหรือถ้าคุณยังไม่ได้สร้างใด ๆ ที่ใช้ssh-keygen -t rsaแล้วssh-addเพื่อเพิ่ม

หากมีกุญแจอยู่ แต่ไม่รู้จักssh-agent(เช่นถ้าอยู่ในโฟลเดอร์ที่ไม่ได้มาตรฐาน) ให้ใช้ssh-add /path/to/my-non-standard-ssh-folder/id_rsaเพื่อเพิ่ม

ดูคำตอบนี้ถ้าคุณกำลังมีปัญหากับหรือssh-add ssh-agent


4
ขอบคุณ @Doedoe สำหรับลิงก์ไปยังคำตอบที่ดีและสั้น และสำหรับผู้ที่มีคีย์ (เช่นบัญชี Git หลายบัญชี) คุณอาจต้องใช้ssh-add /path/to/keyXสำหรับแต่ละบัญชีโดยเฉพาะหากพวกเขามีชื่อที่ไม่ได้มาตรฐาน รายละเอียดที่นี่: stackoverflow.com/questions/3225862/ (คำตอบที่ดี)
tuk0z

ขอบคุณสำหรับสิ่งนี้. ฉันติดอยู่ที่นี่ .. แต่ฉันรู้ว่าฉันต้องทำงานssh-add อีกครั้งหลังจากแก้ไขส่วนสิทธิ์ของปัญหา หลังจากนี้ssh -vT git@github.comไม่ทำงาน ฉันไม่จำเป็นต้องเพิ่มเส้นทางสัมบูรณ์เช่นผู้แสดงความคิดเห็นข้างต้น จากนั้นก็เป็นน้ำเกรวี่
jungledev

2
ในกรณีที่สองฉันลืมข้อความรหัสผ่านและฉันกู้คืนได้โดยใช้help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

ลองนี้:

ssh-add ~/.ssh/id_rsa

ทำงานให้ฉัน


5
สวัสดียินดีต้อนรับสู่ SO โปรดอธิบายรหัสของคุณเพื่อให้ผู้ใช้เพื่อนของคุณสามารถเข้าใจสิ่งที่เกิดขึ้น ไชโย
คธูลู

4
เมื่อคุณรีบูตคีย์ของคุณหายไปและคุณต้อง 'เพิ่ม ssh' อีกครั้ง
Louwki

@ Louwki ใช่ ... มันน่ารำคาญสุด ๆ คุณรู้วิธีรอบที่?
Chris Cirefice

3
@ChrisCirefice เพียงแค่ทำ ssh-add พร้อมพารามิเตอร์เพื่อเพิ่มลงในพวงกุญแจของคุณอย่างถาวร ssh-add -K ~ / .ssh / [คีย์ส่วนตัวของคุณ]
Louwki

1
ในกรณีของฉันการอนุญาตไฟล์ผิดสำหรับคีย์ส่วนตัว แก้ไขโดยchmod 600 ~/.ssh/id_rsaแล้วssh-add ~/.ssh/id_rsa
Morteza Ziyae

39

2019 คำตอบสำหรับ macOS Sierra & High Sierra & Catalina:

PS: คำตอบอื่น ๆ ส่วนใหญ่จะให้คุณสร้างคีย์ ssh ใหม่ ... แต่คุณไม่จำเป็นต้องทำเช่นนั้น :)

ตามที่อธิบายในรายละเอียดเกี่ยวกับhttps://openradar.appspot.com/27348363 , macOS / OS X จนถึง Yosemite ใช้ในการจดจำคีย์ SSH ที่เพิ่มโดยคำสั่งssh-add -K <key>

ดังนั้นนี่คือ 4 ขั้นตอนที่ฉันต้องทำเพื่อให้มันทำงานได้:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2:เพิ่มต่อไปนี้ใน~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3:ตรวจสอบให้แน่ใจว่าได้ลบรายการ gitconfig ใด ๆ ที่ใช้ตัวช่วย osxkeychain:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4:รีสตาร์ทเครื่องของคุณเพื่อให้มีผล


3
คำตอบที่ดีฉันจะพูดถึงตัวเอง! เห็นได้ชัดว่าOS X 10.12.2 และใหม่กว่าไม่โหลดอัตลักษณ์เข้าสู่เอเจนต์ ssh โดยอัตโนมัติ (ซึ่งโดยส่วนตัวแล้วฉันคิดว่าเป็นการตัดสินใจใช้งานที่โง่จริงๆ แต่ฉันเข้าใจถึงผลกระทบด้านความปลอดภัย) ดังนั้นคุณต้องแก้ไขการกำหนดค่า SSH เพื่อโหลดด้วยตนเอง ฉันแค่หวังว่าผลลัพธ์ข้อผิดพลาดจะดีขึ้นนำไปสู่การแก้ปัญหามากกว่าหนึ่งชั่วโมงในการค้นหาอินเทอร์เน็ต
Chris Cirefice

12

ฉันติดปัญหาอยู่ครู่หนึ่งซึ่งฉันก็แก้ไขได้ในที่สุด

ปัญหาของฉัน : ฉันไม่สามารถดำเนินการผลักดันใด ๆ ฉันสามารถตรวจสอบและดูรีโมทของฉัน (โดยใช้git remote -v) แต่เมื่อฉันดำเนินการgit push origin masterมันกลับมา:Permission denied (publickey). fatal: Could not read from remote repository.และอื่น ๆ

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

  • ฉันสร้างคีย์ssh-keygen -t rsaใช้ การป้อนชื่อไฟล์คีย์ (เมื่อถูกถาม) ไม่มีประโยชน์
  • ฉันสามารถเพิ่มคีย์ (ไปยัง git) : ssh-add /Users/federico/.ssh/id_rsaซึ่งส่งคืนสำเร็จIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • ฉันเพิ่มคีย์ SSH ไปยัง gitHub โดยใช้หน้าช่วยเหลือนี้โดยใช้หน้าความช่วยเหลือนี้
  • หลังจากลองใช้คำสั่งทั้งหมดในหน้าช่วยเหลือของ 'อนุญาตสิทธิ์ปฏิเสธ publickey' ของ Github มีเพียงssh-add -lคำสั่งที่ใช้งานได้ / ดูเหมือนมีประโยชน์ (หลังจากทำตามขั้นตอนก่อนหน้านี้) แล้วก็ส่งคืนคีย์ของฉันสำเร็จ ขั้นตอนสุดท้ายแสดงตำแหน่งที่จะตรวจสอบกุญแจสาธารณะของคุณในหน้า GitHub ของคุณ และคำสั่งนี้จะช่วยคุณตรวจสอบกุญแจทั้งหมดของคุณ: ls -al ~/.ssh.

ในที่สุดคำสั่ง push ก็ใช้งานได้!

ฉันหวังว่านี่จะช่วยได้! ขอให้โชคดีทุกคน


7

รันคำสั่งต่อไปนี้:

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

ไปที่บัญชี Github ของคุณ: https://github.com/settings/profile

1) คลิก: คีย์ SSH และ GPG

2) คีย์ SSH ใหม่และวางไว้ที่นั่น

3) เพิ่มคีย์ SSH

ทำ!


Yup - หากคุณผ่านขั้นตอนอื่น ๆ ในการสร้างไฟล์ id_rsa.pub ให้คัดลอกและวางบรรทัด pbcopy ซึ่งคัดลอกคีย์ไปยังคลิปบอร์ดของคุณและทำตามคำแนะนำ @zouhair - github จำเป็นต้องรู้รหัสของคุณ โดยเฉพาะถ้าคุณใช้ 2FA
davidrynn

ฉันสับสนเล็กน้อยเพราะเอกสารปัจจุบันบอกว่า git สร้าง github_rsa / github_rsa.pub ฉันมีทั้งในไดเรกทอรี /.ssh ของฉันและฉันก็ดูเหมือนจะไม่ได้รับอนุญาต ฉันได้สร้างสำเนาในไดเรกทอรีเดียวกันโดยใช้ id_rsa เพื่อไม่เป็นประโยชน์
Mark Löwe

6

ก่อนอื่นคุณต้องไปที่ไดเรกทอรี ssh ของคุณ
เพื่อใช้คำสั่งนี้ใน terminal ของคุณใน mac หรืออะไรก็ตามที่คุณใช้ในหน้าต่าง

cd ~/.ssh

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

ls

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

eval "$(ssh-agent -s)"

ตอนนี้สุดท้าย แต่ไม่ท้ายสุดคุณจะเพิ่ม ssh ในเอเจนต์พิมพ์คำสั่งต่อไปนี้

ssh-add ~/.ssh/your-ssh

แทนที่

แทนที่ your-ssh ด้วยชื่อไฟล์ ssh ของคุณซึ่งคุณได้รับแบบฟอร์มรายการขั้นตอนที่สอง ls command


5

สิ่งนี้อาจเป็นสาเหตุให้เทอร์มินัลใหม่รหัสตัวแทนแตกต่างกัน คุณต้องเพิ่มคีย์ส่วนตัวสำหรับตัวแทน

$ ssh-add <path to your private key>

1

องค์ประกอบเพิ่มเติมอย่างหนึ่งที่ฉันรู้คือโฟลเดอร์. ssh ถูกสร้างขึ้นในโฟลเดอร์รากของคุณใน Mac OS X / Users / หากคุณพยายามใช้ ssh -vT git@github.com จากโฟลเดอร์อื่นมันจะทำให้คุณเกิดข้อผิดพลาดแม้ว่าคุณได้เพิ่มรหัสที่ถูกต้อง

คุณต้องเพิ่มคีย์อีกครั้ง (ssh-add 'พา ธ ที่ถูกต้องไปยัง id_rsa') จากโฟลเดอร์ปัจจุบันเพื่อตรวจสอบสิทธิ์เรียบร้อยแล้ว (สมมติว่าคุณได้อัปโหลดคีย์ไปยังโปรไฟล์ของคุณใน Git แล้ว)


1

สิ่งนี้ใช้ได้กับฉัน:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

จากนั้นพิมพ์สิ่งนี้: ssh-add ~/.ssh/id_rsa


ฉันไม่คิดว่าคำถามเกี่ยวกับการ~/.sshอนุญาต ถึงกระนั้นคุณสามารถปรับปรุงคำตอบของคุณได้อย่างมากโดยการเพิ่มคำสั่งเต็มรูปแบบ (ที่นี่chmod) และอธิบายสิ่งที่ทำและเหตุผลที่จำเป็น
Robert

0

หลังจากดิ้นรนมาเป็นเวลานานในที่สุดฉันก็สามารถแก้ไขปัญหานี้ใน Windows ได้สำหรับฉันตัวแปร User env GIT_SSH ถูกตั้งค่าให้ชี้ไปที่

"ไฟล์ C: \ Program (x86) \ WinScp \ PuTTY \ plink.exe"

ซึ่งติดตั้งพร้อมกับ WinScp ฉันเปลี่ยนการชี้ไปใช้ค่าเริ่มต้นssh.exeซึ่งมาพร้อมกับgit-scm "C: \ Program Files \ Git \ usr \ bin \ ssh.exe"


0

ขั้นตอนสำหรับ BitBucket:

หากคุณไม่ต้องการสร้างคีย์ใหม่ให้ข้าม ssh-keygen

ssh-keygen -t rsa 

คัดลอกกุญแจสาธารณะไปยังคลิปบอร์ด:

clip < ~/.ssh/id_rsa.pub

ลงชื่อเข้าใช้ถังข้อมูลบิต: ไปที่ดูโปรไฟล์ -> การตั้งค่า -> คีย์ SSH (ในแท็บความปลอดภัย) คลิกเพิ่มคีย์วางคีย์ลงในกล่องเพิ่มชื่อบรรยาย

กลับไปที่ Git Bash:

ssh-add -l

คุณควรได้รับ:

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

ตอนนี้: git pullควรได้ผล


0

ฉันมีปัญหานี้หลังจากกู้คืนฮาร์ดไดรฟ์จากข้อมูลสำรอง

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

ฉันมีโฟลเดอร์ SSH และกุญแจ SSH อยู่แล้วและเพิ่มผ่าน Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) ได้เพิ่มข้อมูลประจำตัวของฉันเรียบร้อยแล้ว แต่ฉันยังไม่สามารถผลักดันและยังได้รับข้อผิดพลาดเดียวกัน การสร้างคีย์ใหม่เป็นความคิดที่ไม่ดีสำหรับฉันเพราะมันเชื่อมโยงกับการอนุญาตที่ปลอดภัยมากใน AWS

มันเปิดลิงก์ระหว่างคีย์และโปรไฟล์ Github ของฉันเสีย

การแก้ไข: การเพิ่มคีย์ไปที่ Github ในโปรไฟล์> การตั้งค่า> คีย์ SSH และ GPG ช่วยแก้ปัญหาได้

นอกจากนี้: บัญชีของฉันมีการตั้งค่าการรับรองความถูกต้องด้วยสองปัจจัย ในกรณีนี้ถ้า Terminal ขอข้อมูลรับรองให้ใช้ชื่อผู้ใช้ของคุณ แต่ไม่ใช่รหัสผ่าน Github ของคุณ สำหรับการตรวจสอบสิทธิ์แบบ 2 ปัจจัยคุณต้องใช้รหัสรับรองความถูกต้องของคุณ (สำหรับฉันสิ่งนี้ถูกสร้างขึ้นโดย Authy บนโทรศัพท์ของฉันและฉันต้องคัดลอกไปยัง Terminal สำหรับ pw)

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