ไม่สามารถส่งไปยัง Heroku ได้เนื่องจากลายนิ้วมือที่สำคัญ


131

ฉันยังใหม่กับ Rails และฉันพยายามปรับใช้แอพที่เรียบง่ายมากกับ Heroku นี่เป็นแอพที่สองที่ฉันปรับใช้และเป็นแอพแรกที่ฉันทำได้ดี อย่างไรก็ตามฉันมีปัญหาบางอย่างกับสิ่งนี้ เมื่อใดก็ตามที่ฉัน " git push heroku master " ฉันได้รับข้อผิดพลาดนี้:

! รหัสของคุณที่มีลายนิ้วมือ xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx ไม่ได้รับอนุญาตให้> เข้าถึง my_heroku_app

ถึงแก่ชีวิต: ปลายรีโมทวางสายโดยไม่คาดคิด

ฉันได้พยายามจัดการคีย์ของฉันหลังจากเข้าสู่ระบบ heroku หากฉันพิมพ์ " heroku keys " ในคอนโซลของฉันฉันจะได้รับ:

ไม่มีคีย์สำหรับ myemailaddress

อย่างไรก็ตามหากฉันเรียกใช้ comand " heroku keys: add " I get

พบคีย์สาธารณะที่มีอยู่: /Users/michele/.ssh/id_rsa.pub กำลังอัปโหลดคีย์สาธารณะ ssh /Users/michele/.ssh/id_rsa.pub! มีลายนิ้วมืออยู่แล้ว โปรดใช้หนึ่งคีย์ ssh ต่อบัญชี Heroku

โปรดช่วยฉันด้วย! มันน่าหงุดหงิดมากฉันไม่รู้ว่ามีอะไรผิดปกติ! ขอบคุณ

คำตอบ:


287

ฉันมีปัญหาเดียวกันฉันติดตามโพสต์นี้และอื่น ๆ ที่ไม่ประสบความสำเร็จ: - ((

ในที่สุดฉันก็พบวิธีแก้ปัญหา: ฉันต้องเพิ่มข้อมูลประจำตัว rsa ใหม่ในเครื่องของฉัน!

ก่อนอื่นฉันสร้างคีย์ rsa ใหม่:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

จากนั้นเพิ่มลงในเครื่องของฉัน

ssh-add ~/.ssh/id_rsa_heroku

และในที่สุดก็ถึง Heroku

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

หลังจากนั้น,

git push heroku master

ทำงานอย่างมีเสน่ห์!

หวังว่านี่จะช่วยได้


47
นี่เป็นเรื่องใกล้ตัวสำหรับฉันจริงๆ แต่ยังมีอีกอย่างหนึ่ง ฉันมีบัญชี Heroku สองบัญชี อันแรกได้เพิ่มคีย์ SSH เริ่มต้นสำหรับเครื่องของฉัน ไม่ว่าฉันจะพยายามแก้ไขบัญชีที่สองของฉันอย่างไรก็จะไม่ใช้เวลาจนกว่าฉันจะลบรหัสเริ่มต้นออกจากบัญชีแรก SSH-AGENT จะส่งคีย์แรกตามค่าเริ่มต้นทำให้เกิดปัญหานี้ การแก้ไขคือการสร้างคีย์เฉพาะสำหรับ heroku (ไม่ใช่ค่าเริ่มต้น) สำหรับแต่ละบัญชี
Tom Carchrae

13
ฉันมีปัญหาเดียวกันกับ @TomCarchrae ฉันออกจากระบบบัญชีที่ดูเหมือนถูกจับอย่างถาวรheroku logoutเข้าสู่ระบบบัญชีอื่นและลบคีย์ RSA เริ่มต้นออกจากบัญชีนั้น หลังจากนั้นฉันก็สามารถพุชด้วยคีย์ที่สร้างขึ้นใหม่นี้
Ross Allen

14
สำหรับฉันโดยส่วนตัวฉันทำได้เทียบเท่ากับของssh-add ~/.ssh/id_rsa_herokuฉันssh-add ~/.ssh/identity.heroku.fooเพราะฉันใช้https://github.com/ddollar/heroku-accounts ด้วย (ผู้จัดการบัญชีหลายบัญชีสำหรับ Heroku)
user664833

1
สิ่งหนึ่งที่ควรทราบ - หากคุณมีคีย์ SSH มากเกินไปก็จะไม่สามารถเข้าสู่ระบบได้เนื่องจากลองใช้คีย์ตามลำดับ (จากนั้นคุณจะถูกไล่ออกจากการเข้าสู่ระบบหลายครั้งเกินไป) สิ่งนี้ดูเหมือนจะเป็นข้อบกพร่องกับ ssh-agent (ใน ubuntu อยู่ดี แต่ฉันคิดว่าการใช้งานอื่น ๆ ด้วย) ดังนั้นหากคุณกำลังดึงผมออกให้ลองย้ายไดเร็กทอรี ~ / .ssh ของคุณและเริ่มต้นใหม่ (จากนั้นคุณสามารถดึงคีย์ทีละคีย์ได้)
Tom Carchrae

7
คุณสามารถกำหนดว่าจะส่งคีย์ใดโดยการเพิ่มรายการโฮสต์ใน ~ / .ssh / config สำหรับ heroku.com ชี้ไปที่คีย์ที่คุณต้องการ นี่เป็นการแก้ไขอย่างรวดเร็วสำหรับฉันเนื่องจากพยายามใช้คีย์เริ่มต้นของฉันและล้มเหลว สิ่งนี้อาจไม่ช่วยในกรณีที่มีหลายบัญชี
dnewcome

61

ฉันเองก็มีหลายคีย์และบัญชี Heroku หลายบัญชีดังนั้นฉันจึงพบปัญหานี้ทุกๆสองสามเดือน ตามที่กล่าวไว้ Giordano Scalzo, Tom Carchrae และ user664833 ปัญหาหลักคือ ssh-agent ซึ่งคุณควบคุมโดยใช้ssh-addคำสั่ง หน้าคน ( man ssh-add) นั้นค่อนข้างชัดเจนและรัดกุมดังนั้นลองดูสิ

คุณสามารถแสดงรายการคีย์ทั้งหมดที่ ssh-agent รู้ด้วย:

ssh-add -l

คุณสามารถลบคีย์ทั้งหมดที่ ssh-agent รู้ด้วย:

ssh-add -D

หรือลบคีย์เฉพาะด้วย

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

ไม่ต้องกังวล! คุณไม่ได้ลบคีย์จริงๆเพียง แต่เปลี่ยนคีย์ที่ ssh-agent พยายามใช้โดยอัตโนมัติเท่านั้นตัวอย่างเช่นเมื่อคุณพยายามกดไปที่ heroku เพิ่มและลบคีย์ได้ง่ายตามต้องการดังนั้นสำหรับฉันเมื่อฉันรู้สึกท้อแท้กับปัญหานี้วิธีที่ง่ายที่สุดในการแก้ไขคือลบคีย์ทั้งหมดและเพิ่มกลับเข้าไปในคีย์ที่ฉันต้องการใช้ในขณะนี้เท่านั้น

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it

1
สิ่งนี้ใช้งานได้ดีสำหรับฉันอย่างไรก็ตามการพยายามเพิ่มคีย์ ssh เริ่มต้นของฉันกลับคอยแจ้งให้ป้อนข้อความรหัสผ่าน (บน Mtn Lion) ไม่คิดว่าฉันมีหรือไม่ รีบูตและกลับสู่ ssh เริ่มต้นของฉันก็โอเค - พบว่าstackoverflow.com/questions/7927750/…นี้ใช้งานได้ดี
house9

ทุบหัวฉันกับกำแพงสักพักกว่านี้และนี่คือขั้นตอนสุดท้ายที่จำเป็น - ขอบคุณ!
griswoldbar

หากคุณลองใช้วิธีแรกแล้ววิธีนี้ (และได้รับข้อผิดพลาด Permission Denied (คีย์สาธารณะ) เมื่อคุณพยายามกดไปที่รีโมท Heroku ของคุณคุณอาจลืมที่จะรันคีย์ heroku อีกครั้ง: เพิ่มคำสั่ง ยังไงก็ตามขอบคุณมาก! สิ่งนี้ทำเพื่อฉัน
Hairgami_Master

38

คอมพิวเตอร์ของคุณมีคีย์ SSH แต่คีย์ SSH นั้นเชื่อมโยงกับบัญชี Heroku อื่น

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

$ ssh-keygen

อย่าลืมบันทึกเป็น '/Users/User/.ssh/new_id_rsa.pub' เมื่อมีข้อความถามคุณ

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

จากนั้นคุณจะต้องเพิ่มพื้นที่สำรองสำหรับheroku.comการของคุณ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

จากนั้นอัปเดต.git/configในโครงการของคุณเพื่อใช้นามแฝงของโฮสต์:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

การเลือกระหว่างherokuและheroku-altในระยะไกลของ.git/configไฟล์ของโครงการเฉพาะคุณสามารถจัดการได้ว่าโครงการใดใช้ข้อมูลรับรองใด


1
ใช่นั่นเป็นปัญหาสำหรับฉัน เข้าถึงบัญชี Heroku สองบัญชีจากลูกค้ารายเดียวกัน ขอบคุณ.
เบอร์นาร์ด

ฉันกำลังพยายามทำวิธีนี้ แต่ "โฮสต์ heroku-alt" ให้ข้อผิดพลาด: Host heroku-alt not found: 3(NXDOMAIN). ฉันวางสิ่งนี้ไว้ในเทอร์มินัลของ Mountain Lion ~/.ssh/configไม่ได้อยู่อย่างใดอย่างหนึ่งเพียงพวงของไฟล์และหนึ่งที่เรียกว่า.pub known_hostsและความคิด?
JVG

@Jascination คุณจะต้องสร้าง ~ / .ssh / config และใส่เนื้อหาที่ระบุไว้ในคำตอบ เมื่อคุณทำบันทึกไฟล์และมันจะมีHost, HostNameและIdentityFileสาย จากนั้นควรใช้งานได้ดี
Daniel X Moore

3
ยอดเยี่ยม! เทคนิคนี้สวยหรู!
kinopyo

ชาย! คุณเจ๋งมาก. การดำเนินการทีละขั้นตอนในที่สุดก็ทำให้ฉันโล่งใจ ขอบคุณ !!
softvar

14

นี่เป็นคำอธิบายที่ชัดเจนมากซึ่งขาดจากเอกสารประกอบของ Heroku หรือคำตอบอื่น ๆ สำหรับคำถาม อย่างน้อยข้อมูลทั้งหมดดูเหมือนจะไม่ปรากฏในที่ใดที่หนึ่ง นอกจากนี้ยังช่วยให้คุณเข้าใจปัญหาในลักษณะที่เครื่องมือบัญชีไม่ทำ

Heroku ระบุตัวตนของคุณได้ 2 วิธี:

ตัวแรกอยู่ใน. git / config

[heroku]
    account = acccount_name

ดูเหมือนว่าจะช่วยให้คุณดำเนินการขั้นพื้นฐานโดยใช้ไฟล์ heroku

วิธีที่สอง heroku ระบุตัวคุณคือการดำเนินการใด ๆ ที่ใช้ ssh (git push) Heroku จะระบุตัวคุณด้วยคีย์ ssh ของคุณตามที่ระบุไว้ที่นี่: https://devcenter.heroku.com/articles/keys

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

ดังนั้นบัญชี heroku แต่ละบัญชีที่คุณทำงานจะต้องส่งคีย์ที่แตกต่างกันไปยัง heroku เมื่อใช้ ssh ทำตามบทช่วยสอนเพื่อสร้างคีย์ ssh ของคุณ

กุญแจสำคัญคือการทำให้ SSH ใช้คีย์ที่แตกต่างกันสำหรับแต่ละบัญชี Heroku คุณจะกำหนดค่านี้ได้อย่างไร? คุณจะต้องทำ 2 สิ่ง:

1) คุณจะต้องสร้างโดเมน 'dummy' ที่. ssh / config ของคุณจะดักจับและกำหนดค่าใหม่ สิ่งนี้จะบอก ssh โดเมน 'จริง' ที่คุณต้องการและคีย์ ssh พิเศษใดที่จะใช้

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) เปลี่ยน. git / config ของคุณเพื่อใช้เมื่อใช้ git push แทนที่จะใช้ heroku.com ให้ใช้โดเมนจำลองที่คุณตั้งค่าไว้ใน. ssh / config

[remote "heroku"]
    url = git@heroku.com.git


[remote "heroku"]
    url = git@heroku.my_unique_key:myapp.git

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


ชื่อโฮสต์ที่ไม่ซ้ำกันคือปัญหาของฉัน ขอบคุณคุณ pixelearth มาก ๆ
FluffyJack

Muchos Gracias Por Favor
EE33

9

คุณจะต้องสร้างคีย์ใหม่และเพิ่มคีย์เหล่านั้น

ระบุชื่อไฟล์ใหม่หลังจากรัน

ssh-keygen

แล้ว (ในกรณีของฉัน)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub

3

ฉันมีปัญหาเดียวกันเมื่อสัปดาห์ที่แล้ว ลิงก์นี้ช่วยฉันได้ ฉันหวังว่ามันจะช่วยคุณได้เล็กน้อย http://devcenter.heroku.com/articles/keys


ฉันเห็นลิงก์นั้นแล้วพยายามลบและเพิ่มคีย์อีกครั้ง แต่ก็ยังไม่สามารถใช้งานได้
MRE

คุณได้จัดการปัญหานี้แล้วหรือยัง?
Benjamin

1
คุณสามารถสรุปคำแนะนำได้ที่ลิงค์นี้หรือไม่? เราพยายามหลีกเลี่ยงคำตอบเฉพาะลิงก์ที่นี่
wax Eagle

นี่อธิบายเฉพาะวิธีสร้างคีย์ไม่ใช่วิธีจัดการหลายคีย์
Macario

3

ในกรณีของฉันheroku keysมีรายการคีย์ที่ถูกต้องอยู่แล้ว ดังนั้นสิ่งที่ฉันต้องทำคือวิ่งssh-add /path/to/that/keyจากนั้นทุกอย่างก็เริ่มทำงานได้ดี


2

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


1

เพียงแค่ต้องการเพิ่มโซลูชันสำหรับผู้ใช้ Windows

  1. ดาวน์โหลด"Putty Key generator" ก่อน

  2. สร้างคีย์ด้วย OBS คุณต้องเลื่อนเมาส์ของคุณเพิ่มพื้นที่ว่างเพื่อสร้างการสุ่ม

  3. บันทึกคีย์ของคุณเพียงจำไว้เพื่อเปลี่ยนชื่อคีย์ของคุณเป็น [name] .pub

  4. วิ่งheroku keys:addในเทอร์มินัล!


0

ในกรณีของฉันปัญหาคือเวอร์ชัน ssh ที่ฉันใช้ ฉันเพิ่งตั้งค่าตัวแปรสภาพแวดล้อม GIT_SSH เป็นอื่น ("GIT_SSH = / usr / bin / ssh") และทุกอย่างก็ใช้ได้สำหรับฉัน

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