git push heroku master Permission ถูกปฏิเสธ (publickey) ถึงแก่ชีวิต: ปลายรีโมทวางสายโดยไม่คาดคิด


85

โปรดแก้ตัวด้วยความไม่พอใจเล็กน้อยซึ่งฉันจะพยายามตรวจสอบต่อไปเนื่องจาก Heroku ใช้ SO ในการสนับสนุนลูกค้า (ซึ่งฉันคิดว่ามันแย่ที่จะพูดน้อยที่สุด)

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

กรณีการใช้งานของฉันไม่ใช่เรื่องยาก: ฉันได้สร้างคู่คีย์ใหม่สำหรับแอป heroku ของฉัน ฉันตั้งค่าคีย์นั้นให้เป็นคีย์ของฉัน:

  > heroku keys
  === travis@xxxx.com Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com

ฉันสามารถเข้าสู่ระบบและ "สร้าง" แอปพลิเคชัน (ชื่อโง่ ๆ เนื่องจากดูเหมือนว่ากำลังสร้าง git repo ไม่ใช่แอปประเภทใด ๆ ) โดยไม่มีปัญหา แต่ทุก * * * * * * * * เลวเวลาฉันพยายามที่จะผลักดัน app ของฉันฉันจะได้รับ:

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

ฉันไม่มีความเข้าใจเกี่ยวกับ WTF ที่เกิดขึ้นกับมัน ฉันแค่ก้มหน้าพิงแป้นพิมพ์โดยไม่มีการไล่เบี้ย แต่หวังว่าพระเจ้าผู้ยิ่งใหญ่ของ Google จะตอบได้ และ Google ก็ไม่ตอบคำถามนี้ (ขอฉันย้อนกลับไปฉันเห็นวิธีตอบคำถามนี้มาแล้วหลายสิบวิธี)

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


7
ฉันจะแจ้งให้คุณทราบว่าการสนับสนุนลูกค้าที่เรามีให้สำหรับ Heroku นั้นแย่มาก
Robert Harvey

1
ฉันไม่เคยเป็นอะไรเลยนอกจากประทับใจในคุณภาพของคำตอบที่ SO ฉันแค่คิดว่ามันเป็นวิธีที่ง่อยในการให้การสนับสนุนลูกค้าสำหรับผลิตภัณฑ์ไม่ว่าจะมีเทคนิคอย่างไร จะเกิดอะไรขึ้นหากฉันต้องให้รายละเอียดบัญชีส่วนตัว ไม่ใช่สิ่งที่ฉันต้องการแบ่งปันกับคนทั้งโลก (อย่างที่ฉันรู้เมื่อฉันต้องการแก้ไขโพสต์ต้นฉบับ)
Travis Jensen

คุณเห็นคำถามนี้หรือไม่? โดยเฉพาะส่วนที่เกี่ยวกับการลงทะเบียนคีย์สาธารณะของคุณด้วยคอมไพล์?
Ken White

7
ปัญหาเดียวกันสามารถแก้ไขได้ที่นี่: http://www.whatibroke.com/?p=284

1
โซลูชันที่เชื่อมโยงของ Remi ใช้ได้ผลสำหรับฉัน
Deborah

คำตอบ:


149

มีโซลูชันมากมายในเว็บ ฉันจะพยายามย่อตัวเลือกที่มีอยู่ในโพสต์เดียว โปรดลองเชื่อมต่ออีกครั้งทุกขั้นตอน

  • ขั้นตอนที่ 1: พยายามเพิ่มคีย์สาธารณะของคุณใน Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • ขั้นตอนที่ 2: สร้างชุดคีย์ SSH ใหม่จากนั้นลองขั้นตอนแรกอีกครั้ง

    https://help.github.com/articles/generating-ssh-keys

  • ขั้นตอนที่ 3: ตรวจสอบและ / หรือแก้ไขไฟล์กำหนดค่าของคุณ

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User jsmith@gmail.com
    
  • ขั้นตอนที่ 4: ลบรีโมท heroku ออกจากคอมไพล์สร้างการเชื่อมต่อใหม่การเพิ่มรีโมตผ่านการสร้าง heroku จะเป็นตัวเลือกสำหรับที่เก็บใหม่เท่านั้น อย่าลืมลบ repo เก่าของคุณที่คุณพยายามสร้างครั้งแรก

     $ git remote rm heroku
     $ heroku create
    
  • ขั้นตอนที่ 5: ติดตั้ง Heroku Toolkit อีกครั้ง


10
ขั้นตอนที่ 1 ทำเคล็ดลับให้ฉัน! (ฉันได้สร้างคีย์ SSH ใหม่สำหรับเครื่องและ Github ก่อนที่จะกดไปที่ Heroku) ขอบคุณ!
ATSiem

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

1
ฉันเชื่อว่าบรรทัด IdentityFile ควรเป็นคีย์ ssh ส่วนตัวของคุณ ดูstackoverflow.com/a/8874946/2816571
Paul

2
คุณหมายถึงheroku create? git heroku createไม่ใช่สิ่งของเท่าที่ฉันรู้
Michael Dorst

1
ว้าว. ฉันคิดไม่ออกว่าจะพูดอะไรดีเกี่ยวกับประสบการณ์นี้ ฉันติดตามสูตรอาหารมากมายรวมถึงการถอนการติดตั้ง / การติดตั้ง git ใหม่ github และการแทนที่สีโป๊วด้วย msysgit ในที่สุดขั้นตอนที่ 1-3 ก็ทำได้ แต่การเปลี่ยนแปลงจำเป็นต้องอยู่ใน github ssh_config หลังจากวางและรีเซ็ตคีย์ github ของฉันหลายครั้งโดยไม่มีปัญหาใด ๆ กระบวนการ heroku นั้นน่าผิดหวังจริงๆ
wilk

13

คีย์ heroku และคีย์ github ของคุณไม่ตรงกัน

  • กำหนดคีย์ที่คุณต้องการใช้ (แนะนำให้สร้างคีย์ใหม่คือ heroku_rsa)

  • เพิ่มคีย์ใน github

  • เพิ่มคีย์เดียวกันให้กับ heroku โดยใช้:heroku keys:add


4
ฉันจริงๆจริงๆหวังว่าฉันได้อ่านคำตอบนี้สี่ชั่วโมงที่ผ่านมา แม้ว่าฉันควรจะได้เรียนรู้มากมายระหว่างทาง แต่ก็ไม่ได้แย่ทั้งหมด
Temporary_user_name

ฉันมีบัญชี Heroku สองบัญชีที่แตกต่างกัน (บัญชีหนึ่งใช้อีเมลที่ทำงานสำหรับโครงการในที่ทำงานอีกบัญชีหนึ่งใช้อีเมลส่วนตัวสำหรับโครงการอิสระ) Heroku จะไม่ให้ฉันใช้คีย์เดียวกันสำหรับทั้งคู่ ฉันจะใช้คีย์ Github สำหรับทั้งสองได้อย่างไร (และทำไม Heroku ถึงต้องใช้คีย์ Github ของฉันโดยเฉพาะ Heroku เกี่ยวข้องอะไรกับ Github ถ้าฉันไม่ได้ใช้ Github ล่ะ) ฉันสับสนมาก
callum

ทำงานอย่างมีเสน่ห์! ขอบคุณ!
Shashank

2

ฉันพบปัญหาเดียวกันและนี่คือทฤษฎีของฉันเกี่ยวกับสิ่งที่เกิดขึ้น:

ฉันสมัครใช้งาน Heroku เมื่อนานมาแล้วโดยให้กุญแจสาธารณะ github แก่พวกเขา เมื่อพยายามตามปกติgit push heroku master~/.ssh/github_rsaก็จะไปและดูสำหรับคีย์ส่วนตัวของฉันพบที่ จากนั้นจะล้มเหลวอย่างเงียบ ๆ กับข้อความที่คุณโพสต์

อย่างไรก็ตามในภายหลังฉันได้ลองไปsshยังเซิร์ฟเวอร์อื่นโดยใช้-iแฟล็กเพื่อระบุ "ไฟล์ข้อมูลประจำตัว" ของฉัน (เช่นคีย์ส่วนตัว) และมันแจ้งให้ฉันป้อนรหัสผ่านสำหรับคีย์ส่วนตัว เมื่อ "ปลดล็อก" คีย์ส่วนตัวgit push heroku masterคำสั่งจะทำงาน ข้อสรุปบางประการ:

  • ในขณะที่sshจะแจ้งให้คุณใส่รหัสผ่านไปยังไฟล์ข้อมูลประจำตัวgitจะไม่
  • หากคุณปลดล็อกไฟล์ข้อมูลประจำตัวด้วยวิธีอื่นเช่นsshไฟล์จะยังคงปลดล็อกอยู่สำหรับไฟล์gitการใช้งาน
  • ดูเหมือนจะไม่มีเอกสารเกี่ยวกับวิธีลบการป้องกันรหัสผ่านอย่างถาวรในไฟล์ข้อมูลประจำตัวรวมถึงคำสั่ง unix ทั่วไปkeytoolเอกสารเกี่ยวกับวิธีการลบอย่างถาวรป้องกันรหัสผ่านในไฟล์ตัวตนรวมทั้งร่วมกันคำสั่งยูนิกซ์
  • วิธีแก้ปัญหาข้างต้นในการสร้างคู่คีย์สาธารณะ / ส่วนตัวใหม่ดูเหมือนจะเป็นวิธีแก้ปัญหาสำหรับปัญหารหัสผ่านนี้โดยไม่ทราบว่าเป็นปัญหา


1

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

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

ฉันต้องเพิ่มคีย์สาธารณะใน github (ด้วยตนเอง) และ heroku ด้วย

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub

0

หากไม่มีวิธีแก้ปัญหาอื่นใดที่เหมาะกับคุณตรวจสอบให้แน่ใจว่าคุณได้ลงชื่อเข้าใช้ linux shell ด้วยบัญชีของคุณไม่ใช่ด้วยรูทบัญชีท

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

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