วิธีแก้ไขข้อผิดพลาดการอนุญาต (publickey) เมื่อใช้ Git


631

ฉันบน Mac gitเสือดาวหิมะและฉันเพียงแค่ติดตั้ง

ฉันแค่พยายาม

git clone git@thechaw.com:cakebook.git

แต่นั่นทำให้ฉันเกิดข้อผิดพลาด:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

ฉันพลาดอะไรไป
ฉันได้ลองทำssh-keygenโดยไม่ใส่ข้อความรหัสผ่าน แต่ยังมีข้อผิดพลาดเดิม


8
คุณลองอัปโหลดกุญแจสาธารณะที่คุณสร้างขึ้นผ่าน ssh-keygen แล้วหรือยัง?
Patrick Cornelissen

ปัญหาของฉันคือฉันลองโคลนจากsudo- นี่คือผู้ใช้อื่นที่มีกุญแจสาธารณะอื่น
Vitaly Zdanevich

ข้อผิดพลาดเดียวกัน ก่อนหน้านี้ฉันสร้างพับลิกคีย์ผ่าน GitHub จากนั้นสร้างคีย์แพร์อื่นพร้อมssh-keygenยูทิลิตี้ การลบคีย์สาธารณะเก่าในการตั้งค่าส่วนบุคคลบน github และเพิ่มคีย์ s_ idsa ที่สร้างขึ้นของฉันไปยังคีย์ SSH และ GPG เพื่อแก้ไขปัญหาการอนุญาตการโคลน
แทนเนอร์ Dolby

คำตอบ:


774

หากผู้ใช้ยังไม่ได้สร้างคู่คีย์สาธารณะ / ส่วนตัว ssh ที่ตั้งไว้ก่อนหน้านี้

ข้อมูลนี้ทำงานบน theChaw แต่สามารถนำไปใช้กับที่เก็บ git อื่น ๆ ทั้งหมดที่รองรับ SSH pubkey Authentication (ดูตัวอย่างของ gitolite , gitlab หรือ gitub)

เริ่มแรกด้วยการตั้งค่าชุดคีย์สาธารณะ / ส่วนตัวของคุณเอง สิ่งนี้สามารถใช้ DSA หรือ RSA ได้ดังนั้นโดยทั่วไปคีย์ใด ๆ ที่คุณตั้งค่าจะใช้งานได้ ในระบบส่วนใหญ่คุณสามารถใช้ ssh-keygen

  • ก่อนอื่นคุณต้อง cd ลงในไดเรกทอรี. ssh ของคุณ เปิดเทอร์มินัลแล้วเรียกใช้:

    cd ~/.ssh && ssh-keygen

  • ถัดไปคุณต้องคัดลอกสิ่งนี้ไปยังคลิปบอร์ดของคุณ
    • ในการทำงาน OS X: cat id_rsa.pub | pbcopy
    • ในการรันบน Linux: cat id_rsa.pub | xclip
    • บน Windows (เรียกใช้ผ่าน Cygwin / Git Bash): cat id_rsa.pub | clip
  • เพิ่มรหัสของคุณในบัญชีของคุณผ่านเว็บไซต์
  • ในที่สุดตั้งค่า. gitconfig ของคุณ
    • git config --global user.name "bob"
    • git config --global user.email bob@... (อย่าลืมรีสตาร์ทบรรทัดคำสั่งของคุณเพื่อให้แน่ใจว่าการกำหนดค่าจะถูกโหลดใหม่)

เพียงเท่านี้คุณก็ควรที่จะโคลนและเช็คเอาต์

ข้อมูลเพิ่มเติมสามารถดูได้ที่https://help.github.com/articles/generating-ssh-keys (ขอบคุณ @Lee Whitney) -

หากผู้ใช้ได้สร้างคู่คีย์สาธารณะ / ส่วนตัว ssh ที่ตั้งไว้ก่อนหน้านี้

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

eval $(ssh-agent -s)

  • กำหนดที่ตั้งของกุญแจ

ssh-add ~/.ssh/id_rsa


6
ตกลง. จริงๆแล้วนี่ไม่ใช่ git แต่เป็นปัญหาการซิงโครไนซ์ ฉันได้เหมือนกันกับ Assembla และลิงค์ของคุณช่วยฉันแก้ไขมันได้ ขอบคุณมาก!
Alexandre Bourlier

คำตอบนี้มีประโยชน์ แต่ดูเหมือนจะสมบูรณ์มากขึ้นและง่ายขึ้นถ้าคุณกำลังสร้างกุญแจจากศูนย์: help.github.com/articles/generating-ssh-keys
whitneyland

6
ฉันพบปัญหากับ keygen มันมีความไวต่อที่อยู่อีเมลในตัวแปร env ทั่วโลก ในกรณีที่คุณมีปัญหานี้คุณจะต้องระบุที่อยู่อีเมลสำหรับบัญชี Github ของคุณในขั้นตอนแรก: ssh-keygen -t rsa -C "your_email@youremail.com"
melchoir55

30
ssh-add ~/.ssh/id_rsaหากที่ยังไม่ทำงานคุณจะต้อง
Michael Litvin

1
การคัดลอกโดยใช้xclipบน Linux ทำงานได้โดยทำสิ่งต่อไปนี้xclip -sel clip < ~/.ssh/id_rsa.pubซึ่งแสดงอยู่ที่นี่: help.github.com/articles/generating-ssh-keys
Pat Migliaccio

217

การแก้ไขปัญหาที่ครอบคลุมมากขึ้นและการแก้ไขอัตโนมัติสามารถทำได้ด้วย:

ssh -vT git@github.com

ที่มา: https://help.github.com/articles/error-permission-denied-publickey/


1
ปัญหาของฉันเกี่ยวกับการมีรหัสอื่นสำหรับเซิร์ฟเวอร์ของฉัน เมื่อฉันใช้คำสั่งข้างต้นเพื่อตรวจสอบปัญหาฉันแก้ไข IdentifyFile ในไฟล์ config ของฉันและมันทำงานได้
Jarie Bolander

1
แสดงให้เห็นว่า GitHub ที่สำคัญพยายามที่จะใช้ในการตรวจสอบ v เป็นประโยชน์
cdosborn

9
มันไม่ได้แก้ไขอะไรเลย ฉันยังได้รับข้อผิดพลาดในคำถามของ OP
IgorGanapolsky

5
คำสั่งอยู่ที่นั่นเพื่อช่วยคุณแก้ไขปัญหาไม่ใช่สวิตช์ Magic Fix-this-for-me
stevek

2
ฉันไม่สามารถพูดสิ่งนี้แก้ไขอะไร แต่มันเป็นนรกของคำสั่งที่น่าสนใจและทำงานร่วมกับ GitHub Enterprise เช่นกัน
Hack-R

164

ข้อผิดพลาดนี้สามารถเกิดขึ้นได้เมื่อคุณเข้าถึง URL SSH (อ่าน / เขียน) แทน URL แบบอ่านอย่างเดียวของ Git แต่คุณไม่มีสิทธิ์เข้าถึงเพื่อเขียนไปยัง repo นั้น

บางครั้งคุณเพียงต้องการโคลน repo ของคุณเองเช่นปรับใช้กับเซิร์ฟเวอร์ ในกรณีนี้คุณต้องเข้าถึงแบบอ่านอย่างเดียวเท่านั้น แต่เนื่องจากว่าธุรกรรมซื้อคืนคุณเอง GitHub อาจแสดง URL SSH หากเป็นค่ากำหนดของคุณ ในสถานการณ์เช่นนี้ถ้าคีย์สาธารณะในพื้นที่ห่างไกลของคุณไม่ได้อยู่ในของคุณ GitHub คีย์ SSH การเข้าถึงของคุณจะถูกปฏิเสธซึ่งคาดว่าจะเกิดขึ้น

กรณีที่เทียบเท่าคือเมื่อคุณลองโคลน repo ของคนอื่นที่คุณไม่สามารถเข้าถึงการเขียนด้วย URL SSH

ในคำที่คุณจะมีเจตนาที่จะโคลนเท่านั้น repo ใช้ HTTPS URL ( https://github.com/{user_name}/{project_name}.git) แทน SSH URL (ที่git@github.com:{user_name}/{project_name}.git) ที่หลีกเลี่ยง (ไม่จำเป็น) การตรวจสอบคีย์สาธารณะ


อัปเดต: GitHub กำลังแสดง HTTPS เป็นโปรโตคอลเริ่มต้นในขณะนี้และการย้ายนี้อาจลดการใช้ URL SSH ในทางที่ผิดได้


ด้วยhttps://github.comURL SSL certificate problem: self signed certificate in certificate chainคอมไพล์ก็ยังกล่าวว่า git -c http.sslVerify=false clone ...ดูเหมือนจะเป็นอันตราย Chrome ไม่ได้ให้คำเตือน ssl ใด ๆ คิด?
Jason Kleban

1
@ uosɐſ ขออภัย แต่ฉันไม่เคยพบปัญหานี้ บางทีสิ่งแรกที่ต้องทำคือลองคำสั่งเดียวกันจากเครื่องอื่นและดูว่ายังมีปัญหาอยู่หรือไม่
kavinyao

1
มันทำเพื่อฉันเช่นกัน ขอบคุณ ในการโคลน repo git ของฉันไปยังบัญชีโฮสติ้งที่ใช้ร่วมกันของฉัน (1 และ 1) ฉันต้องใช้ git clone https://github.com/MyUserName/MyRepo.git เพียงแค่คลิกที่ลิงค์ข้อความใต้ repo URL ทางด้านขวาของหน้า Github ที่มันบอกว่า " คุณสามารถโคลนด้วย HTTPS, SSH หรือ Subversion . " (คลิกHTTPSเพื่อรับลิงค์แทนSSHเริ่มต้น)
Oliver Schafeld

ขอบคุณ!!!!!!
Sharl Sherif

คำตอบที่ยอดเยี่ยม ในที่สุดก็มีคนอธิบายว่าทำไมมันถึงเป็นเช่นนั้น
Qback

104

ลิงค์ความช่วยเหลือ GitHub ช่วยฉันจัดการปัญหานี้ ดูเหมือนว่าจะไม่ได้เพิ่มคีย์ ssh ไปยัง ssh-agent นี่คือสิ่งที่ฉันทำ

คำสั่ง 1:

ตรวจสอบให้แน่ใจว่าเปิดใช้งาน ssh-agent แล้ว คำสั่งเริ่มต้น ssh-agent ในพื้นหลัง:

eval "$(ssh-agent -s)"

คำสั่ง 2:

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

ssh-add ~/.ssh/id_rsa

7
หลังจากอัปเกรดเป็น OSx El Capitan ไปยัง Sierra สิ่งนี้ใช้ได้สำหรับฉัน
Louwki

7
ทำงานให้ฉันหลังจากอัปเกรดเป็น macOS Sierra =)
Adriano Resende

สิ่งนี้ใช้ได้กับฉันใน Raspberry Pi โดยที่ ssh-add มีแฟล็ก "-k" แทนที่จะเป็น "-K" แต่เมื่อฉันเพิ่มคีย์การปรับใช้ของฉันฉันสามารถโคลน repo ของฉันได้สำเร็จโดยใช้ลิงก์ SSH
Josh

34

มีรายงานข้อผิดพลาดเดียวกัน

แก้ไขด้วยการใช้ HTTP แทน เนื่องจากฉันไม่ต้องการตั้งค่า "คีย์ SSH" สำหรับพีซีทดสอบ

เปลี่ยน URL เป็น HTTP เมื่อทำการโคลน:

git clone https://github.com/USERNAME/REPOSITORY.git

ปัญหาของฉันแตกต่างกันเล็กน้อย : ฉันมีชุด URL เมื่อเพิ่ม repo ภายในเครื่องที่มีอยู่ในรีโมทโดยใช้:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

หากต้องการแก้ไขให้รีเซ็ต URL เป็น HTTP:

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW คุณสามารถตรวจสอบ URL ของคุณโดยใช้คำสั่ง:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

หวังว่านี้จะช่วยให้ใครบางคนเช่นฉัน : D



21

โปรดทราบว่า (อย่างน้อยสำหรับบางโครงการ) คุณต้องมีบัญชี Github พร้อมคีย์ sshกับคีย์

ดูคีย์ที่แสดงรายการไว้ในตัวแทนการตรวจสอบความถูกต้องของคุณ ( ssh-add -l )
(หากคุณไม่เห็นเลยให้เพิ่มหนึ่งในคีย์ที่มีอยู่ด้วย ssh-add / path / to / your / key (เช่นssh-add ~ /.ssh/id_rsa ))
(หากคุณไม่มีคีย์ให้สร้างรหัสใหม่ดูที่: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.htmlหรือแค่ google ssh-keygen)

ในการตรวจสอบว่าคุณมีรหัสที่เกี่ยวข้องกับบัญชี GitHub ของคุณ :

ไปที่: https://github.com/settings/ssh

คุณควรเห็นอย่างน้อยหนึ่งคีย์ที่มีคีย์แฮชตรงกับหนึ่งในแฮชที่คุณเห็นเมื่อคุณพิมพ์ssh-add -l เมื่อไม่กี่นาทีที่ผ่านมา

หากคุณไม่มีให้เพิ่มหนึ่งรายการจากนั้นลองอีกครั้ง


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

19

ฉันกำลังดิ้นรนกับปัญหาเดียวกันนั่นคือสิ่งที่ฉันทำและฉันสามารถโคลน repo ฉันทำตามขั้นตอนเหล่านี้สำหรับiMacแล้ว

ขั้นตอนแรก: ตรวจสอบว่าเรามีรหัส SSH สาธารณะอยู่แล้ว

  1. เปิด Terminal
  2. ป้อนls -al ~/.sshเพื่อดูว่ามีคีย์ SSH ที่มีอยู่หรือไม่:

ตรวจสอบรายชื่อไดเรกทอรีเพื่อดูว่าคุณมีคีย์ SSH สาธารณะอยู่หรือไม่เริ่มต้นสาธารณะเป็นหนึ่งใน d_dsa.pub, id_ecdsa.pub ต่อไปนี้, id_ed25519.pub, id_rsa.pub

หากคุณไม่พบให้ไปที่ขั้นตอนที่ 2 หรือทำตามขั้นตอนที่ 3

ขั้นตอนที่ 2: การสร้างคีย์ SSH สาธารณะ

  1. เปิด Terminal
  2. ป้อนคำสั่ง followong พร้อมที่อยู่อีเมลที่ถูกต้องที่คุณใช้สำหรับ github ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. Generating public/private rsa key pairคุณจะเห็นต่อไปนี้ในสถานี เมื่อได้รับแจ้งให้"Enter a file in which to save the key,"กด Enter สิ่งนี้ยอมรับตำแหน่งไฟล์เริ่มต้น เมื่อได้รับแจ้งให้Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]กด Enter อีกครั้ง ที่พรอมต์พิมพ์ passphrase ที่ปลอดภัย
  4. Enter passphrase (empty for no passphrase): [Type a passphrase]กด Enter หากคุณไม่ต้องการEnter same passphrase again: [Type passphrase again]กด Enter อีกครั้ง

สิ่งนี้จะสร้าง id_rsa.pub

ขั้นตอนที่ 3: การเพิ่มคีย์ SSH ของคุณไปยัง ssh-agent

  1. ประเภท Interminal eval "$(ssh-agent -s)"
  2. เพิ่มคีย์ SSH ของคุณไปยัง ssh-agent หากคุณกำลังใช้คีย์ SSH ที่มีอยู่แทนที่จะสร้างคีย์ SSH ใหม่คุณจะต้องแทนที่ id_rsa ในคำสั่งด้วยชื่อของไฟล์คีย์ส่วนตัวที่มีอยู่ของคุณ ป้อนคำสั่งนี้$ ssh-add -K ~/.ssh/id_rsa

ตอนนี้คัดลอกคีย์ SSH และเพิ่มไปยังบัญชี gitHub ของคุณ

  1. ในเทอร์มินัลป้อนคำสั่งนี้ด้วยชื่อไฟล์ ssh ของคุณpbcopy < ~/.ssh/id_rsa.pubสิ่งนี้จะคัดลอกไฟล์ไปยังคลิปบอร์ดของคุณตอนนี้เปิดบัญชี github คุณไปที่การตั้งค่า> คีย์ SSH และ GPG> คีย์ SSH ใหม่ป้อนชื่อและวางคีย์จากคลิปบอร์ดและบันทึก Voila คุณทำเสร็จแล้ว

2
สำเนาผู้ใช้ Windows ผ่าน: cat ~ / .ssh / id_rsa.pub | คลิป
Fabii

1
ในที่สุดหลังจากอ่านที่นี่และมีเวลาหนึ่งชั่วโมงการแก้ปัญหาทีละขั้นตอน .... ใช้งานได้ดี อย่าลืมเพิ่มรหัสผ่าน Github ของคุณเป็นวลีรหัสผ่านในขั้นตอนอื่น ๆ จะต้องเพิ่มด้วยตนเองทุกครั้ง
Afshin Ghazi

13

ฉันมีสถานการณ์ที่แตกต่างกันเล็กน้อยฉันเข้าสู่เซิร์ฟเวอร์ระยะไกลและใช้ git บนเซิร์ฟเวอร์เมื่อฉันรันคำสั่ง git ใด ๆ ฉันได้รับข้อความเดียวกัน

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

วิธีที่ฉันแก้ไขมันคือการเปลี่ยนไฟล์ / etc / ssh_config บน Mac ของฉัน จาก

ForwardAgent no 

ถึง

ForwardAgent yes

ข้อผิดพลาดเกิดขึ้นขณะพยายามดึงอัญมณีจาก github จาก VirtualBox VM อัปเดต Vagrantfile ของฉันเพื่อใช้config.ssh.forward_agent = trueรีสตาร์ท VM และตอนนี้ก็ใช้งานได้
Chris Bloom

1
อาจไม่ใช่ตัวเลือกที่ดีที่สุดในด้านความปลอดภัยตามนี้: heipei.github.io/2015/02/26/ …
พ่อ

13

ฉันพบปัญหาเดียวกันเนื่องจากฉันคิดว่าความแตกต่างระหว่างSSHและHTTPSคือ

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

ดังนั้นฉันเปลี่ยนจากHTTPSเป็นSSHเพียงแค่เปลี่ยนhttps://เป็นssh://ไม่มีอะไรเลยในตอนท้ายของ URL ที่มีการเปลี่ยนแปลง

แต่ความจริงก็คือ:

https://github.com/USERNAME/REPOSITORY.git

git@github.com:USERNAME/REPOSITORY.git

ซึ่งหมายความว่าฉันเปลี่ยนssh://github.com/USERNAME/REPOSITORY.gitเป็นgit@github.com:USERNAME/REPOSITORY.gitใช้งานได้

ข้อผิดพลาดโง่ ๆ แต่หวังว่าจะช่วยให้ใครบางคน!


ใช่ฉันเปลี่ยนssh://github.com/USERNAME/REPOSITORY.gitไปgit@github.com:USERNAME/REPOSITORY.gitใช้งานได้
William Hu

แน่ใจ ฉันแค่บอกว่าฉันไม่เห็นจุดที่กล่าวถึง https;)
OneCricketeer

ฉันเห็นเพราะฉันเพิ่งใช้sshแทนhttpsดังนั้นฉันเพิ่งเปลี่ยน 'https: //' เป็น 'ssh: // `จากนั้นฉันได้รับข้อผิดพลาด ดังนั้นเปลี่ยน 'ssh: // git /../' เป็น 'git @ .. / ":) แก้ไขคำตอบของฉัน
William Hu

มันใช้งานได้สำหรับฉัน ขอบคุณมาก! ฉันลอง https แล้ว ssh แต่ก็ยังคงปฏิเสธการเข้าถึงของฉันจนกว่าจะทำให้มันเป็นแบบของคุณด้วย "git clone git@github.com: /myusername/myproject.git"
Thach Van

6

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


6

คุณอยู่ในสภาพแวดล้อมขององค์กรหรือไม่? เป็นไปได้ว่าตัวแปรระบบของคุณมีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้? ต่อนี้คำตอบ SO, กุญแจ SSH %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pubอาศัยอยู่ที่ ดังนั้นหาก%HOMEDRIVE%มีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้คอมไพล์ไม่รู้ว่าจะหากุญแจของคุณที่ไหน

ssh -vT git@github.comลองใช้ จดบันทึกตำแหน่งที่identity fileอยู่ สำหรับฉันนั่นไม่ได้ชี้ไปที่ปกติของฉัน\Users\MyLoginแต่เป็นไดรฟ์เครือข่ายเนื่องจากมีการเปลี่ยนแปลงตัวแปรสภาพแวดล้อมที่ผลักดันในระดับเครือข่าย

การแก้ไขปัญหา? เนื่องจากใหม่ของฉัน%HOMEDRIVE%มีสิทธิ์เช่นเดียวกับไฟล์ในเครื่องของฉันฉันเพิ่งย้ายโฟลเดอร์. ssh ของฉันไปที่นั่นและเรียกมันต่อวัน


งานนี้สำหรับฉัน เมื่อวานนี้คีย์ ssh ของฉันทำงานได้ แต่วันนี้การตั้งค่าบางอย่างของระบบของฉันเปลี่ยนไป ฉันเพิ่งเพิ่มคีย์ shh อีกครั้งและมันใช้งานได้แล้ว
Hitesh Agarwal

6

พวกนี้คือวิธีการทำงานสำหรับฉัน:

  1. เปิดเทอร์มินัลแล้วไปที่ผู้ใช้ [ดูรูปที่แนบมา]
  2. เปิดโฟลเดอร์. ssh และตรวจสอบให้แน่ใจว่าไม่มีไฟล์ใด ๆ เช่น id_rsa หรือ id_rsa.pub มิฉะนั้นบางครั้งก็ไม่สามารถเขียนไฟล์ได้อย่างถูกต้อง
  3. git - รุ่น [ตรวจสอบการติดตั้ง git และรุ่น]
  4. git config - ผู้ใช้ทั่วโลกอีเมล "รหัสอีเมลของคุณ"
  5. git config - ชื่อผู้ใช้ทั่วโลก "ชื่อของคุณ"
  6. git config - รายการ [ตรวจสอบให้แน่ใจว่าคุณได้ตั้งชื่อและอีเมลของคุณ]
  7. cd ~ / .ssh
  8. ssh-keygen, มันพร้อมต์ให้บันทึกไฟล์, อนุญาต
  9. cat ~ / .ssh / id_rsa.pub [เข้าถึงกุญแจสาธารณะของคุณและคัดลอกกุญแจเพื่อตั้งค่า gerrit]

หมายเหตุ : คุณไม่ควรใช้คำสั่ง sudo กับ Git หากคุณมีเหตุผลที่ดีมากที่คุณต้องใช้ sudo ให้แน่ใจว่าคุณใช้มันกับทุกคำสั่ง (น่าจะดีกว่าถ้าใช้ su เพื่อให้เชลล์เป็นรูทในจุดนั้น) หากคุณสร้างคีย์ SSH โดยไม่ใช้ sudo แล้วลองใช้คำสั่งเช่น sudo git push คุณจะไม่ใช้ปุ่มเดียวกับที่คุณสร้างขึ้น

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


5

คำแนะนำ GIT พื้นฐานไม่ได้อ้างอิงถึงข้อมูลสำคัญของ SSH ตามลิงค์ด้านบนฉันพบหน้าช่วยเหลือ git ที่อธิบายทีละขั้นตอนวิธีการทำสิ่งนี้สำหรับระบบปฏิบัติการต่าง ๆ (ลิงก์จะตรวจจับระบบปฏิบัติการของคุณและเปลี่ยนเส้นทางตาม):

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

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



3

นอกเหนือจากการตอบกลับของ Rufinus ทางลัดในการคัดลอกคีย์ ssh ของคุณไปยังคลิปบอร์ดในWindowsคือ:

  • type id_rsa.pub | clip

refs:


3

หากคุณมีคีย์มากกว่าหนึ่งคีย์คุณอาจต้องทำ ssh-add private-keyfile


ขอบคุณมาก! นี่เป็นปัญหาของฉัน
GoGreen

[root @ li566-238 hanjiyun] # ssh-add private-keyfile private-keyfile: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
JY Han

3

ฉันพบข้อผิดพลาดนี้เนื่องจากฉันต้องการให้สิทธิ์ไดเรกทอรีการทำงานปัจจุบันของฉันกับ 700:

chmod -R 700 /home/ec2-user/

3

ฉันต้องคัดลอกคีย์ ssh ไปยังโฟลเดอร์รูท Google Cloud Compute Engine ที่ใช้งาน Ubuntu 18.04

sudo cp ~/.ssh/* /root/.ssh/

2

ฉันเพิ่งพบปัญหานี้ขณะตั้งค่าโครงการปัจจุบันของฉันและไม่มีวิธีการแก้ปัญหาข้างต้นใด ๆ ดังนั้นฉันจึงลองดูสิ่งที่เกิดขึ้นจริงในรายการแก้ปัญหาโดยใช้คำสั่ง ssh -vT git@github.com ฉันสังเกตเห็นว่าชื่อไฟล์ส่วนตัวของฉันไม่อยู่ในรายการ ดังนั้นการเปลี่ยนชื่อไฟล์ชื่อคีย์ส่วนตัวเป็น 'id_rsa' ทำงาน หวังว่านี่จะช่วยได้


ไม่เป็นประโยชน์ในบางกรณีเมื่อคุณใช้คีย์ "id_rsa" เพื่อสิ่งอื่น ....
random_user_name

2

มันตรงไปตรงมาสวย พิมพ์คำสั่งด้านล่าง

ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"

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


1

ฉันได้รับข้อผิดพลาดการอนุญาตที่คล้ายกันถูกปฏิเสธ (publickey)เมื่อพยายามเรียกใช้ makefile

คุณสามารถติดตั้งแอพพลิเคชั่น GitHub สำหรับ Mac

คลิกดาวน์โหลด GitHub สำหรับ Macจาก - https://help.github.com/articles/set-up-git#platform-mac

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

[GitHub] รหัสสาธารณะใหม่ถูกเพิ่มในบัญชีของคุณ

และข้อผิดพลาดของฉันได้รับการแก้ไข


1

ฉันได้รับข้อผิดพลาดเดียวกัน ปัญหาของฉันกำลังปะปนอยู่ใน sudo

ฉันไม่สามารถสร้างไดเรกทอรีที่ฉันทำการโคลนโดยอัตโนมัติได้โดยไม่ต้องใส่คำสั่ง git clone ด้วย sudo อย่างไรก็ตามเมื่อฉันทำเช่นนั้นกุญแจ SSH ของฉันซึ่งไม่ได้รับการอ้างอิงอย่างเหมาะสม

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


1

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


1

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

รหัสสาธารณะของคุณจะถูกบันทึกลงในไฟล์ id_rsa.pub และเป็นรหัสที่คุณอัปโหลดไปยังบัญชีของคุณ คุณสามารถบันทึกคีย์นี้ไปยังคลิปบอร์ดได้ด้วยการรัน:

pbcopy <~ / .ssh / id_rsa.pub

  • คัดลอกคีย์ SSH ไปยังคลิปบอร์ดกลับไปที่เว็บพอร์ทัล
  • ในฟิลด์คีย์ SSH ให้วางคีย์ SSH ของคุณ
  • ในฟิลด์ชื่อให้ระบุชื่อสำหรับคีย์
  • บันทึก

1

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

ssh -i [your id_rsa path] -T github@github.com

คุณควรอธิบายว่าทำไมคำตอบของคุณจะแก้ปัญหาของเขาขอบคุณ
Muhammed Refaat

1

ทางออกที่ง่ายที่สุดสำหรับเรื่องนี้เมื่อคุณพยายามที่จะผลักดันพื้นที่เก็บข้อมูลที่มีชื่อผู้ใช้ที่แตกต่างกันคือ:

 git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

1

ข้อผิดพลาดแปลก ๆ นี้ในกรณีของฉันคืออาการของgnome-keyring-daemonการตั้งชื่อคีย์ไม่ถูกต้องซึ่งต้องใช้รหัสผ่าน

ฉันทำตามขั้นตอนที่อธิบายไว้ที่นี่และป้อนรหัสผ่านผ่านทางเทอร์มินัล ข้อผิดพลาดหรือที่รู้จักในส่วนติดต่อ GUI แบบรบกวนได้รับการแก้ไข ดู: /ubuntu/3045/how-to-disable-gnome-keyring


1

ในกรณีของฉันฉันได้ติดตั้ง Ubuntu ใหม่และชื่อผู้ใช้ถูกเปลี่ยนจากก่อนหน้า ในกรณีนี้คีย์ ssh ที่สร้างยังแตกต่างจากคีย์ก่อนหน้า

ปัญหาแก้ไขได้โดยเพียงแค่คัดลอกกุญแจสาธารณะ ssh ปัจจุบันในพื้นที่เก็บข้อมูล รหัสจะพร้อมใช้งานในผู้ใช้ของคุณ/home/.ssh/id_rsa.pub


1

ใน MAC ของฉันฉันแก้ไขด้วย:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

ด้วยเหตุผลบางอย่างคอมไพล์ของฉันหยุดหาคีย์ส่วนตัวในgithub_rsaไฟล์ เรื่องนี้เกิดขึ้นใน repo เฉพาะ ฉันหมายความว่าในที่เก็บอื่น ๆ คอมไพล์ยังคงทำงานได้ตามปกติ

ฉันคิดว่ามันเป็นข้อผิดพลาด

ฉันพบพฤติกรรมนี้ทำงาน ssh -vT git@github.com

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