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


139

ฉันค้นหาหลายชั่วโมงเพื่อหาวิธีแก้ไขปัญหาที่ดูเหมือนจะแก้ไขได้ง่าย ไม่ใช่ว่าการค้นหาของฉันไม่ปรากฏอะไรเลย แต่การค้นหาของฉันเปิดขึ้นโซลูชันที่แตกต่างกันมากมาย

อย่างไรก็ตามฉันไม่สามารถดันดึงหรือดึงข้อมูลจากที่เก็บ Heroku จาก Mac ของฉันได้ ความพยายามทุกครั้งทำให้ฉัน (ราวกับว่ามันล้อเลียนฉัน) ข้อผิดพลาดต่อไปนี้:

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

ฉันพยายาม (และลองอีกครั้ง) เพื่อแก้ไขด้วยวิธีที่แตกต่างกัน อย่างที่ฉันพูดไปฉันใช้เวลาไปสองวันในการค้นหาคำตอบ นี่คือบางสิ่งที่ฉันได้ลอง:

  • คีย์ heroku: ล้างแล้วตามด้วยคีย์ heroku: เพิ่ม
  • การสร้างคีย์ ssh ด้วยตัวเองด้วย 'ssh-keygen -t rsa'
  • การล้างไดเรกทอรี. ssh ของฉันตามด้วยคีย์ heroku: clear ตามด้วยการสร้างคีย์ ssh
  • การลบแอปของฉันใน heroku และสร้างใหม่ (โชคดีที่มีไม่มาก)

ฉันสามารถดึงข้อมูลจากที่เก็บ GitHub ของฉันได้ดังนั้นฉันรู้ว่านี่ไม่ใช่การเชื่อมต่อเครือข่าย

ในฐานะที่เป็นโซลูชันชั่วคราว (ที่ฉันหวังว่าจะไม่เปลี่ยนเป็นแบบถาวร) ฉันได้ลงชื่อเข้าใช้อินสแตนซ์ Ubuntu Amazon AWS ec2 ของฉัน การดึงและดันเข้าและออกจาก Heroku นั้นทำงานได้อย่างสมบูรณ์ ด้วยเหตุนี้ฉันยังคงรู้สึกว่าปัญหาอยู่ที่ปุ่ม ssh บน Mac ของฉัน ปุ่มทั้งสองปรากฏขึ้นภายใต้บัญชี Heroku ของฉัน ที่อยู่อีเมลในตอนท้ายของเรื่องสำคัญหรือไม่

แก้ไข: ฉันสามารถผลักดันและดึงจาก GitHub ได้ดี (ฉันไม่ได้ใช้ ssh) ดังนั้นทำไมไม่ Heroku

ณ จุดนี้ฉันยินดีที่จะลองทำทุกอย่าง ขอบคุณ!


คุณตั้งข้อความรหัสผ่านเป็นคีย์ heroku หรือไม่? และฉันคิดว่าสิ่งนี้ ( stackoverflow.com/a/16753800/6309 ) ไม่ได้ช่วยอะไร หรือตรวจสอบstackoverflow.com/a/16753800/6309
ซ้ำ

น่าเศร้าที่มันยังคงปฏิเสธที่จะทำงาน
thebradbain

บางครั้งสิ่งนี้เกิดขึ้นเมื่อ heroku อยู่ในระหว่างการบำรุงรักษา: status.heroku.com
Mavis

คำตอบ:


284

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

Permission denied (publickey)ข้อผิดพลาดที่สำคัญร่วมกันคือ: คุณสามารถแก้ไขได้โดยใช้keys:addเพื่อแจ้ง Heroku ถึงกุญแจใหม่ของคุณ

ในระยะสั้นทำตามขั้นตอนเหล่านี้: https://devcenter.heroku.com/articles/keys

ก่อนอื่นคุณต้องสร้างรหัสถ้าคุณไม่มี:

ssh-keygen -t rsa

ประการที่สองคุณต้องเพิ่มคีย์ไปที่ Heroku:

heroku keys:add

2
ขอบคุณ kris บางคนจากอนาคต :) สิ่งนี้ใช้ได้กับฉัน
Ahmad Ajmi

8
คีย์ heroku: เพิ่มคือการกวดวิชาของฉันพลาดฉันเดา ... ขอบคุณ! :)
Ole Henrik Skogstrøm

กุญแจจะต้องถูกสร้างขึ้นหากคุณไม่มี alredy หนึ่งอันในกรณีของฉันฉัน alredy มีรหัสและเพียงแค่ต้องเพิ่มคีย์ใน heroku
joseramonc

4
คนแรกไม่จำเป็น heroku keys:addจะช่วยคุณสร้างรหัสใหม่หากคุณไม่มีรหัส
Mygod

เรียกใช้ssh-keygen -t rsaหากRSAไม่ได้สร้างขึ้นมิฉะนั้นheroku keys:addควรจะเพียงพอ
Volatil3

122

ฉันแค่คิดว่าฉันจะแบ่งปันว่าฉันพบคำตอบสำหรับคำถามของฉันเอง

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

ปรากฎว่าฉันพูดถูก ปัญหาไม่ได้มาจากกุญแจ แต่ฉันไม่ได้เพิ่มลงในรายการของ ssh ที่รู้จักในคีย์ของ ssh ดังนั้นแม้ว่าบัญชี Heroku ของฉันจะมีการอัปโหลดคีย์ที่ถูกต้อง แต่ Mac ของฉันไม่สามารถตรวจสอบสิทธิ์ได้เพราะไม่พบรหัสนั้นในคอมพิวเตอร์ของฉัน การแก้ไขปัญหา?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

ฉันต้องการให้เครดิตกับhttps://help.github.com/articles/error-permission-denied-publickeyสำหรับการอ้างอิงที่ดี


5
ขอบคุณสำหรับคำติชมของคุณแม่นยำกว่าสถานการณ์ของคุณมากกว่าความคิดเห็นเริ่มต้น +1
VonC

4
ใน Windows หนึ่งจะต้องเริ่มต้นGit Bash(คลิกขวาที่โฟลเดอร์) และเริ่มต้นสิ่งssh-agentที่เป็นไปได้โดยการเรียกใช้`ssh-agent`(คำนึงถึงเครื่องหมายขีดหลัง) จากนั้นเพิ่มคีย์ตามที่อธิบายไว้ข้างต้น ฉันต้องทำสิ่งนี้ทุกครั้งที่ฉันเริ่มGit Bash/ ssh-agentมันลืมสิ่งที่ถูกเพิ่มเข้าไป
TWiStErRob

ฉันทำสิ่งนี้แล้ว แต่ก็ยังไม่ทำงาน ในที่สุดฉันก็ต้องเพิ่มตัวแปรสภาพแวดล้อมที่เรียกว่า HOME set ไปยังไดเรกทอรีโฟลเดอร์. ssh ของฉันอยู่ใน
Justin

ขอบคุณ - จะไม่ได้คิดออก!
Mark Hansen

การแก้ไขปัญหาของฉันนี้ไม่สูงลงมติคำตอบขอบคุณ :)
ไรอัน Brodie

31

ฉันมีข้อผิดพลาดเดียวกันแน่นอน (บน windows 7) และสาเหตุนั้นแตกต่างกัน ฉันแก้ไขมันในวิธีที่แตกต่างดังนั้นฉันคิดว่าฉันจะเพิ่มสาเหตุและวิธีแก้ไขปัญหาให้กับผู้อื่น

แม้ว่าข้อผิดพลาดดูเหมือนจะชี้ไปที่ Heroku "Heroku can't get to the git repository"จริงๆข้อผิดพลาดบอกว่า ฉันสาบานว่าฉันมีคีย์เดียวกันบนเซิร์ฟเวอร์ทั้งหมดเพราะฉันสร้างขึ้นและอัปโหลดไปยังทีละอันในเวลาเดียวกัน

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

1) ฉันลบไฟล์ทั้งหมดในโฟลเดอร์คีย์ของฉันคีย์จาก github โดยใช้เว็บไซต์ของพวกเขาและคีย์จาก heroku โดยใช้ git bash และคำสั่ง heroku keys:clear

2) ปฏิบัติตามคำแนะนำของ GitHub ที่นี่เพื่อสร้างคู่กุญแจใหม่และอัปโหลดกุญแจสาธารณะไปยังคอมไพล์

3) ใช้git bash- heroku keys:add เพื่ออัปโหลดคีย์เดียวกันไปยัง heroku

ตอนนี้ใช้git push heroku masterงานได้

ฝันร้ายหวังว่านี่จะช่วยใครซักคน

ไบรอัน


1
เก็บสมองของฉันไว้ในนี้จนกว่าฉันจะเห็นโพสต์ของคุณ ทันทีที่ฉันทำ git และ heroku ก็เหมือนกันทุกอย่างเป็นไปด้วยดี แต่ไม่เข้าใจว่าทำไมพวกเขาจึงต้องเหมือนกัน
Kishore Masand

ขอบคุณสำหรับคำตอบที่ใช้เวลากับปัญหานี้
Ivan Bacher

ลิงค์เอกสารคอมไพล์ที่มีประโยชน์มากใช้งานได้สมบูรณ์แบบ
HotJard

สิ่งนี้ใช้ได้กับฉันหลังจากสองสามวันของการพยายามคิดออก ฉันประหลาดใจที่ Heroku สามารถทำธุรกิจด้วยปัญหาการใช้งานที่น่ารังเกียจนี้ ควรมีวิธีที่ง่ายกว่าในการทำเช่นนี้
ลุคเอฟ.

ขอบคุณ. ทำงานให้ฉัน เพียงสิ่งเดียว: ในลิงค์ github บางแห่งบอกว่าจะทำ "ssh-add" ที่นั่นฉันมีปัญหา แต่ฉันได้พบวิธีแก้ปัญหาที่นี่: stackoverflow.com/questions/17846529/ …
Alin Ciocan

17

ปัญหาที่ฉันพบคือฉันใช้ https สำหรับบัญชี GitHub ของฉันเท่านั้น ฉันต้องตรวจสอบให้แน่ใจว่าบัญชี GitHub ของฉันถูกตั้งค่าสำหรับการเข้าถึง ssh และ GitHub และ heroku ต่างก็ใช้กุญแจสาธารณะเดียวกัน นี่คือขั้นตอนที่ฉันทำ:

  1. นำทางไปยังไดเร็กทอรี ~ / .ssh และลบ id_rsa และ id_rsa.pub หากมี ฉันเริ่มด้วยปุ่มใหม่แม้ว่ามันอาจจะไม่จำเป็นก็ตาม

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. ทำตามขั้นตอนใน gitHub เพื่อสร้างคีย์ ssh
  3. เข้าสู่ระบบ heroku สร้างเว็บไซต์ใหม่และเพิ่มกุญแจสาธารณะของคุณ:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

6

ฉันมีกรณีเดียวกันบน linux ubuntu และเพิ่งแก้ไขดูเหมือนว่า OS จะสับสนระหว่าง /root/.ssh/ และ home / user / .ssh / dir สิ่งที่ฉันทำคือ:

  1. ลบคีย์ทั้งหมดออกจากไดเรกทอรี root และ home / user .shh
  2. สร้างรหัสใหม่ให้แน่ใจว่าได้ใส่ใจกับเส้นทางของการสร้าง (/home/you/.ssh/id_rsa) หรือ (/root/.ssh/id_rsa)
  3. ตรวจสอบกุญแจ heroku heroku keys
  4. หากปุ่มในนั้นชัดเจน heroku keys:clear
  5. heroku keys:addตอนนี้ที่นี่ถ้า heroku หาคีย์ไม่ได้และขอให้สร้างรหัสที่ถูกต้องและนั่นหมายความว่าคุณมีปัญหาเช่นเดียวกับของฉันทำคำสั่งเพิ่มเช่นนี้heroku keys:add /root/.ssh/id_rsa.pubเส้นทางที่คุณจะเพิ่มจะเป็นที่คุณได้รับ ในขั้นตอนที่ 2
  6. ลองgit push heroku masterตอนนี้

3

ทางของฉันใน Windows 8

  1. เพิ่มไดเรกทอรีที่มี ssh-keygen ให้กับตัวแปร PATH ของระบบซึ่งโดยปกติคือ C: \ Program Files (x86) \ Git \ bin

  2. เปิด CMD ไปที่ C: \ Users \ Me \

  3. สร้างคีย์ SSH ssh-keygen -t rsa

    ป้อนไฟล์ที่จะบันทึกคีย์ (//.ssh/id_rsa): .ssh / id_rsa (เปลี่ยนพา ธ ที่ไม่ถูกต้องเริ่มต้นเป็น. ssh / somegoodname_rsa)

  4. เพิ่มรหัสไปยัง Heroku heroku keys:add

    เลือกคีย์ที่สร้างขึ้นจากรายการ

  5. ไปที่ไดเรกทอรีแอปของคุณเขียนโค้ดที่สวยงาม

  6. เริ่ม repo คอมไพล์ git init git add . git commit -m 'chore(release): v0.0.1

  7. สร้างแอปพลิเคชั่น Heroku heroku create

  8. ปรับใช้แอปของคุณ git push heroku master

  9. เปิดแอปของคุณ heroku open


2

มีปัญหาที่คล้ายกันและลองสิ่งต่างๆมากมาย ท้ายที่สุดสิ่งที่ใช้ได้ผลสำหรับฉันคือต้องติดตั้ง Gnu บน Windows ( https://github.com/bmatzelle/gow/releases ) และตรวจสอบให้แน่ใจว่าได้ใช้เครื่องมือ ssh ภายในไดเรกทอรีนั้นและไม่ใช่ Git เมื่อติดตั้งการทดสอบแล้วด้วย (โปรดตรวจสอบว่ามันอยู่ในสภาพแวดล้อมของคุณ PATH ที่นำหน้า Git \ bin หรือไม่)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

ฉันใช้ผงสำหรับอุดรูและประกวดตามที่อธิบายไว้ที่นี่: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-plink-page/

เมื่อคีย์ถูกส่งไปยัง heroku (คีย์ heroku: เพิ่ม c: \ Users \ Person.ssh \ id_rsa.pub) ให้ใช้

ssh -v <username>@heroku.com 

และตรวจสอบให้แน่ใจว่าสแต็กของคุณแสดงการใช้งานของ Putty - เช่นสแต็กที่ใช้งานได้:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

อันที่ทำงานก่อนหน้านี้และล้มเหลว:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.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: 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: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

พูดได้แค่นี้ใช้ Windows 8 (8.1) ดูเหมือนว่าเครื่องมือ GoW ssh เป็นกุญแจสำคัญเนื่องจากฉันสามารถใช้งานได้โดยไม่ต้องใช้ผงสำหรับอุดรูและใช้ ssh-keygen
user3484361

2

คุณต้องสร้างคีย์ ssh ใหม่โดยพิมพ์ดังต่อไปนี้ - ssh-keygen -t rsa

จากนั้นคุณต้องเพิ่ม: - ปุ่ม heroku: เพิ่ม

จากนั้นถ้าคุณพิมพ์ - heroku เปิด

ปัญหาได้รับการแก้ไขแล้ว

มันใช้งานได้สำหรับฉันแล้วคุณสามารถลอง ...


2

ฉันได้รับข้อผิดพลาดเดียวกันและเนื่องจากฉันมี 4 ssh-keys ดังนั้นฉันจึงลองทำตาม:

ssh-keygen -t rsa
heroku keys:add

จากนั้นตัวเลือกสี่ตัวแสดง:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

ฉันเลือก 3) อันใหม่ล่าสุด

จากนั้นฉันแก้ไขข้อผิดพลาด


1

ฉันใช้วิธีนี้เพื่อแก้ปัญหานี้บางทีคุณสามารถลองใช้ได้

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

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

http://git-scm.com/

  1. ติดตั้ง

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

C: \ Program Files \ Git \ cmd

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

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


1

ฉันต้องการเพิ่มโซลูชันอื่นเนื่องจากฉันไม่เห็นที่นี่ ปัญหาของฉันคือ heroku กำลังเชื่อมโยงไปยัง URL ที่ไม่ถูกต้อง (ตั้งแต่ฉันยังคงเล่นกับชื่อ url) การแก้ไข URL ระยะไกลสามารถแก้ไขปัญหาของฉันได้:

git remote set-url heroku <heroku-url-here>

0

ฉันมีปัญหาเดียวกัน และฉันพยายามรีเซ็ตกุญแจตามที่ทุกคนพูด แต่ก็ยังใช้งานไม่ได้ เพราะเป็นเพราะฉันเปลี่ยนชื่อแอป

ดังนั้นสิ่งที่ฉันทำคือรีเซ็ตคีย์ของฉันและเปลี่ยนชื่อแอปจากคอนโซล ตรวจสอบคำถามนี้สำหรับข้อมูลเพิ่มเติม: ปัญหา Heroku push app


0

ทางออกที่ง่ายดังนั้นไปที่ c: /Users/user_name/.ssh/ และลบคู่ pub / private key ทั้งหมดด้วยวิธีนี้ heroku จะสร้างคีย์ให้คุณ


0

ฉันมีข้อผิดพลาดของ heroku ssh ที่ฉันไม่สามารถแก้ไขได้

เพื่อเป็นการหลีกเลี่ยงปัญหาฉันใช้คุณลักษณะ http-git ของ heroku ใหม่ (การขนส่ง http สำหรับรีโมท "heroku" แทนที่จะเป็น ssh) รายละเอียดที่นี่: https://devcenter.heroku.com/articles/http-git

(เวอร์ชั่นสั้น: หากคุณมีโครงการที่ติดตั้งแบบมาตรฐานอยู่แล้วให้รัน heroku git: remote --http-init เพื่อเปลี่ยน "heroku" remote เป็น http.)

การทำงานอย่างรวดเร็วที่ดีหากคุณไม่มีเวลาแก้ไข / แก้ไขปัญหา ssh


ในกรณีของฉันปัญหาดูเหมือนว่าจะเกี่ยวข้องกับ ":" ใน ssh เส้นทางระยะไกล (Git 1.9.4 สำหรับ windows) ด้วยเหตุผลบางอย่าง ssh: // git @ host: repo ล้มเหลวด้วย "ร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล" ในขณะที่ ssh: // git @ host / repo "สำเร็จ
FullTimeCoderPartTimeSysAdmin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.