ปฏิเสธการอนุญาต (publickey) เมื่อปรับใช้รหัส heroku ร้ายแรง: ปลายระยะไกลวางสายโดยไม่คาดคิด


849

ฉันพยายามปรับใช้รหัสของฉันกับ heroku ด้วยบรรทัดคำสั่งต่อไปนี้:

git push heroku master

แต่รับข้อผิดพลาดต่อไปนี้:

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

ฉันได้อัปโหลดคีย์ SSH สาธารณะของฉันแล้ว แต่ข้อผิดพลาดนี้ยังคงเกิดขึ้น


โซลูชันของ sebarmeli ทำงานให้คุณได้หรือไม่? ฉันไม่ได้ใช้คีย์ rsa ชื่อ "id_rsa.pub" และเพิ่งป้อน "heroku keys: เพิ่ม ~ / .ssh / <rsa_key_filename> .pub"
Michael Merchant

6
ฉันมีปัญหานี้เมื่อเกือบหนึ่งปีที่ผ่านมาและวิธีแก้ปัญหาที่เสนอในเวลานั้นไม่ได้ผลสำหรับฉัน แต่ฉันคิดออกมาอย่างใด (ณ จุดนี้ฉันจำไม่ได้ว่าสิ่งที่ฉันทำ) Sebarmeli ตอบหลังจากที่ฉันไม่ต้องการความช่วยเหลืออีกต่อไปแม้ว่าดูเหมือนว่าคำตอบของเขาจะเป็นที่นิยมในหมู่ผู้ที่ประสบปัญหาคล้ายกัน ถ้ามันทำให้คนมีความสุขฉันจะเลือกคำตอบของเขาให้ถูกต้อง
vich

3
บรรทัดต่อไปนี้แก้ไขปัญหาให้ฉัน บัญชี heroku: ตั้งค่าบัญชีของคุณ
Mingming

ดูเหมือนว่าบางบริการของ heroku จะไม่สามารถใช้งานได้ในวันนี้ - อย่าลืมตรวจสอบไซต์ของพวกเขาหากมีข้อบกพร่อง
Philip Guin

ฉันมีปัญหาเดียวกันสิ่งที่ฉันต้องทำheroku loginก็แค่เขียนอีเมลและรหัสผ่านแล้วลองอีกครั้ง
Alejandro Veintimilla

คำตอบ:


1474

คุณต้องอัพโหลดกุญแจสาธารณะของคุณไปที่ Heroku:

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

หากคุณไม่มีรหัสสาธารณะ Heroku จะขอให้คุณเพิ่มรหัสโดยอัตโนมัติซึ่งทำงานได้อย่างราบรื่น เพียงใช้:

heroku keys:add

หากต้องการล้างคีย์ก่อนหน้าทั้งหมดให้ทำดังนี้

heroku keys:clear

หากต้องการแสดงคีย์ที่มีอยู่ทั้งหมดของคุณให้ทำ:

heroku keys

แก้ไข:

ข้างต้นดูเหมือนจะไม่ทำงานสำหรับฉัน ฉันยุ่งกับHOMEตัวแปรสภาพแวดล้อมดังนั้น SSH จึงค้นหากุญแจในไดเรกทอรีที่ไม่ถูกต้อง

เพื่อให้แน่ใจว่า SSH ตรวจสอบคีย์ในไดเร็กทอรีที่ถูกต้องให้ทำ:

ssh -vT git@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/Wrong/Directory/.ssh/identity type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_rsa type -1
debug1: identity file /c/Wrong/Directory/.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/Wrong/Directory/.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/Wrong/Directory/.ssh/identity
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_rsa
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_dsa
debug1: No more authentication methods to try.

Permission denied (publickey).

จากด้านบนคุณสามารถสังเกตเห็นว่า ssh ค้นหากุญแจใน/c/Wrong/Directory/.sshไดเรกทอรีซึ่งไม่ใช่ตำแหน่งที่เรามีกุญแจสาธารณะที่เราเพิ่งเพิ่มไปยัง heroku (โดยใช้heroku keys:add ~/.ssh/id_rsa.pub) ( โปรดทราบว่าใน windows OS ~หมายถึงHOMEเส้นทางที่ชนะC:\Users\UserName 7/8 คือ )

ในการดูโฮมไดเร็กตอรี่ปัจจุบันของคุณให้ทำ: echo $HOMEหรือecho %HOME%(Windows)

เพื่อตั้งค่าHOMEไดเรกทอรีของคุณอย่างถูกต้อง (โดยถูกต้องฉันหมายถึงไดเรกทอรีหลักของ.sshไดเรกทอรีเพื่อให้ ssh สามารถหากุญแจในไดเรกทอรีที่ถูกต้อง) อ้างอิงลิงค์เหล่านี้:

  1. คำตอบเกี่ยวกับวิธีการตั้งค่าตัวแปรสภาพแวดล้อม Unix อย่างถาวร

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


31
ไม่ได้ผลสำหรับฉัน ฉันต้องเพิกถอนคีย์เก่าของฉันแล้วปล่อยให้แอป heroku สร้างและอัปโหลดคีย์ใหม่ให้ฉัน ดูลิงก์เกี่ยวกับวิธีการจัดทำโดยลิเธียม
borisdiakur

9
แค่ทราบถึงคนที่บอกว่ามันใช้งานไม่ได้ คุณต้องตรวจสอบให้แน่ใจว่าคุณได้ใช้รหัสสาธารณะของ ssh แล้ว help.github.com/mac-set-up-gitสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำเช่นนั้นกับ mac
Ryan

92
หากคุณไม่มีคีย์สาธารณะ heroku จะแจ้งให้คุณเพิ่มโดยอัตโนมัติซึ่งทำงานได้อย่างราบรื่น เพียงใช้:heroku keys:add
vansan

13
ลองใช้ssh-keygen -t rsa -C "your_email@youremail.com"ถ้ายังมีข้อผิดพลาดในการสร้าง file.pub อื่นและใช้คำสั่งนั้นในคำสั่งที่แนะนำในคำตอบนี้
Tom Roggero

3
คุณอาจต้องสร้าง / สร้างรหัสใหม่ก่อนที่จะเพิ่มลงใน heroku whatibroke.com/?p=284ได้ทำงานให้ฉันสำหรับ Windows 7
Khalid Saifullah

146

ฉันมีปัญหาเดียวกันขั้นตอนด้านล่างใช้ได้สำหรับฉัน

->heroku login

abc@gmail.com & รหัสผ่าน

->cd C:\Users\yourusername\.ssh    (OR for cygwin shell ->cd ~/.ssh)

->ssh-keygen -t rsa -f id_rsa

หากถามข้อความรหัสผ่านใด ๆ อย่าใช้ข้อความให้กรอกข้อความรหัสผ่าน แต่อย่าลืม

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

$ ssh-add

และเพื่อ heroku

->heroku keys:add "id_rsa.pub"

เปลี่ยนไดเรกทอรีเป็นพื้นที่ทำงานมากกว่า

->git clone git@heroku.com:stark-dawn-1234.git -o heroku

ใช้ข้อความรหัสผ่านที่คุณตั้งไว้ด้านบน


ที่จริงฉันลบไฟล์ด้านล่างด้วย แต่ไม่แน่ใจว่ามันเป็นไฟล์

C: \ Users \ yourusername.heroku \ credientals และ C: \ Users \ yourusername.ssh \ known_hosts


21
วิธีนี้แก้ไขได้สำหรับฉัน ฉันคิดว่าเหตุผลคือฉันมีไฟล์ 'github_rsa' Github for Windowsแต่ไม่มีไฟล์ id_rsa
msiemens

ไม่ทำงานกับตัวติดตั้ง Openssl ฉันต้องติดตั้ง CopSSH เพื่อรับโปรแกรม ssh-keygen.exe
djangofan

ใน Windows 7 ฉันต้องทำตามgit bashคำสั่งเพื่อเรียกใช้ ssh-keygen ขอบคุณ
Rots

สิ่งนี้ได้ผลกับฉันและดูเหมือนจะเป็นทางออกที่ดีที่สุด คำถามที่ดีกว่าคือทำไมฉันต้องทำซ้ำทุกวัน ๆ
Paul Renton

3
สิ่งนี้ใช้ได้สำหรับฉัน หากคุณกำลังใช้ Git Bash บน Windows คีย์นั้นจะต้องมีชื่อว่า id_rsa.pub ไม่เช่นนั้นจะไม่ทำงานแม้ว่าคุณจะอัปโหลดไฟล์อื่นไปยัง Heroku ก็ตาม
Kiv

90

ปัญหานี้เกิดขึ้นกับฉันสองสามวัน

สิ่งนี้อาจช่วยได้

1) ค้นหาคีย์ที่คุณมีใน Heroku ตอนนี้

$ heroku keys
=== 1 key for joe@example.com
ssh-dss AAAAB8NzaC...DVj3R4Ww== joe@workstation.local

2) สร้างไฟล์ ~ / .ssh / config:

$ sudo vim ~/.ssh/config

แก้ไขด้วยข้อมูลนี้

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User joe@workstation.local

3
สิ่งนี้ได้ผลกับฉันเช่นกันหลังจากไม่มีสิ่งอื่นทำ! อย่างไรก็ตามควรมีการแบ่งบรรทัดก่อนหน้าUserในบรรทัดสุดท้าย นอกจากนี้ยังบ่นเกี่ยวกับ#ความคิดเห็นดังนั้นฉันเพิ่งลบออก
Erik J

2
ตรวจสอบให้แน่ใจว่า "IdentityFile" มีไฟล์สาธารณะ (เช่นด้านบน) ไม่ใช่ไฟล์สาธารณะ ด้วยเหตุผลบางอย่างของฉันมีรุ่นสาธารณะและมันก็มีข้อผิดพลาดโยนบอกว่าสิทธิ์สำหรับไฟล์ไม่ถูกต้อง
เควินเค

การเพิ่มhostข้อมูลนี้ไปยังไฟล์ปรับแต่งของฉันช่วยแก้ปัญหาให้ฉันได้ ฉันสร้างคีย์ Heroku อาร์เอสและสิทธิ์เริ่มต้นบน heroku.pub git pushโยนข้อผิดพลาดเมื่อฉันพยายามที่จะ ฉันต้องchmod 600 heroku.pubแล้วเมื่อฉันผลักมันทำงาน
Dylan Valade

1
IdentityFile ~/.ssh/ssh-dssเป็นเส้นทางไปยังคีย์ส่วนตัว คุณต้องการป้อนรหัสส่วนตัวของคุณที่นี่ไม่ใช่กุญแจสาธารณะของคุณ
HairOfTheDog

1
คำตอบนี้คือสิ่งที่ทำให้ฉันอยู่ด้านบน ฉันใช้ Windows 7 64 บิต มีหลายขั้นตอนอื่น ๆ ที่ช่วยเช่น: ssh-keygen -t rsa -f id_rsa จากนั้นลบคีย์ heroku และเพิ่มที่เพิ่งสร้างขึ้น: คีย์ heroku: คีย์ heroku: เพิ่ม C: \ Users \ ชื่อผู้ใช้ \. ssh \ id_rsa.pub จากนั้นแก้ไขไฟล์ด้านบนเล็กน้อยเป็น IdentityFile C: /Users/windows_username/.ssh/id_rsa
Paul

61

นี่คือลิงค์ที่อธิบายวิธีจัดการคีย์ ssh ของคุณ: https://devcenter.heroku.com/articles/keys#adding-keys-to-heroku


2
Heroku ไม่เคยเตือนให้ฉันเพิ่ม ดังนั้นฉันต้องทำ ssh-keygen ก่อน สิ่งนี้ช่วยได้ ขอบคุณ!
Kal

อันนี้ใช้ได้สำหรับฉัน สร้างรหัสใหม่ในกรณีของฉันเขียนทับรหัสเดิมจากนั้นเลือก id_rsa.pub เพื่อใช้กับ heroku ขอบคุณ
jfoutch

35

ฉันมีปัญหาเดียวกันทำให้ฉันไม่มีกุญแจสาธารณะดังนั้นฉันจึง:

heroku keys:clear
heroku keys:add

ที่จะสร้างรหัสสาธารณะและจากนั้นก็ทำงานได้ดี


1
ยังคงได้รับข้อผิดพลาด ฉันลองทำสิ่งต่าง ๆ แก้มันแล้วเจอปัญหาเดิมในสัปดาห์หน้า ... ฉันสงสัยว่าทำไม Heroku ถึงเป็นแบบนี้
JGallardo

31

หากคุณเป็นผู้ใช้ windows การแก้ปัญหาอื่น ๆ ที่นี่อาจไม่สามารถแก้ปัญหาของคุณได้

ผมใช้ Windows 7 64 บิต + Git-1.7.7.1-preview20111027 และการแก้ปัญหาคือการคัดลอกคีย์ของฉันจากไปC:\users\user\.ssh C:\Program Files (x86)\Git\.sshนั่นคือที่ลูกค้า git นี้มองหากุญแจเมื่อกดไปที่ heroku

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


2
สำหรับฉันมันคือ c: \ msysgit \ .ssh ฉันเพิ่งสร้างทางแยกไดเรกทอรีไปยังโฟลเดอร์. ssh ในโฟลเดอร์ส่วนตัวของฉัน
โคลิน Bowern

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

12
อย่าทำอย่างนั้น! ใช้งานได้เนื่องจาก HOME ว่างเปล่าและจะใช้ค่าเริ่มต้นเป็น exe dir ปัจจุบัน หากมีคนจัดการการเข้าสู่ระบบในฐานะแขกเขาสามารถรับรหัสส่วนตัวของคุณได้ ตั้งค่า HOME ในการตั้งค่าผู้ใช้ขั้นสูงเป็น% HOME_DRIVE %% HOMEPATH% (หรือ C: \ Users \ <ชื่อผู้ใช้> บน Win7) และคัดลอก. ssh
dmajkic

ต่อไป @dmajkic บน Win7 เห็นนี้Git สำหรับ Windows เคล็ดลับสำหรับการตั้งค่าตัวแปรสภาพแวดล้อมในการ%HOME% %USERPROFILE%
Steve Eynon

29

นี่คือทางออกสำหรับฉัน:

ssh-add ~/.ssh/my_heroku_key_rsa

1
กันที่นี่ ขอบคุณ. นอกจากนี้ตรวจสอบให้แน่ใจว่าคีย์ส่วนตัวของคุณมีสิทธิ์ที่เหมาะสมที่เกี่ยวข้องกับมัน chmod 600 ~/.ssh/heroku_rsa
Arnaud Brousseau

ขอบคุณ - นี่เป็นปัญหาของฉันเช่นกันและฉันต้องทำตามเคล็ดลับของ Arnaud ด้วยเช่นกันก่อน
Mike Atlas

15

ในการแบ่งปันประสบการณ์ของฉัน:

Git (ติดตั้งของฉันเอง) กำลังค้นหาคีย์ที่ชื่อว่า 'id_rsa'

ดังนั้นฉันจึงพยายามเปลี่ยนชื่อคีย์เป็น 'id_rsa' และ 'id_rsa.pub'และใช้งานได้

Btw ฉันแน่ใจว่ามีวิธีอื่นที่จะทำ แต่ฉันยังไม่ได้ดูลึก


3
ทำงานให้ฉัน (Windows 7 64 บิต) ฉันติดตั้ง GitHub สำหรับ Windows แล้วและตั้งชื่อคีย์ GitHub_rsa มีวิธีระบุคีย์ Git ที่ควรใช้หรือไม่
Spongeboy

11

หากคุณได้อัปโหลดคีย์แล้วให้ลองลบคีย์แล้วอัปโหลดใหม่ด้วยรหัสใหม่

 heroku keys:remove //removes the existing key
 ssh-keygen -t rsa //generates a new key in ~/.ssh folder
 heroku keys:add    //uploads the new key, if no arguments r passed then the key generated                              
                    //in default directroy i.e., ~/.ssh/id_rsa is uploaded
 git push heroku

สิ่งนี้น่าจะใช้ได้


ขอบคุณสิ่งนี้ใช้ได้สำหรับฉัน Altough ฉันใช้คีย์ heroku: clear แทน heroku keys: remove
Peter de Ridder

1
ผิดMust specify KEY to remove
JGallardo

7

ฉันฆ่าตัวเองเป็นเวลา 3 วันพยายามทุกชุดที่เป็นไปได้เพื่อพยายามทำให้มันทำงาน - ในที่สุดฉันก็ลองทำรหัสDSAแทนและมันก็ใช้ได้

ลอง DSA แทน RSA ถ้ามันไม่ทำงานสำหรับคุณ

(ฉันใช้ Ubuntu 11.10, ruby ​​1.8.7, heroku 2.15.1)


1
ฉันพูดคุยกับฝ่ายสนับสนุนของ Heroku และพวกเขาแนะนำว่านี่เป็นวิธีแก้ปัญหาชั่วคราว มันใช้งานได้สำหรับฉัน แต่ฉันแน่ใจว่ามันไม่ใช่คำตอบสำหรับทุกกรณี
Sauce McBoss

3
ไม่แน่ใจว่าทำไมคำตอบนี้สมควรได้รับการโหวตลง ... มันแก้ปัญหาให้ฉันแล้วและมันก็แนะนำคำตอบให้กับปัญหา
Sauce McBoss

ฉันมีปัญหาตรงข้าม ... แม้ว่าเอกสาร Heroku dev บอกว่าคุณสามารถใช้คีย์ DSA (ssh-dss) ได้ฉันยังได้รับข้อความ 'การอนุญาตถูกปฏิเสธ' จนกว่าฉันจะเปลี่ยนเป็นคีย์ RSA
brandonjp

ทำงานให้ฉัน การสลับระหว่าง dsa และ rsa ดูเหมือนว่าจะทำงานได้ถ้าคุณเปลี่ยนกุญแจหลังจากที่ heroku สร้างและก่อนที่จะกดคอมไพล์
Pramod

และฉันจะสร้างคีย์ DSA และเพิ่มลงใน heroku ได้อย่างไร
coiso

6

สำหรับ Windows 7,64 บิตการแก้ปัญหาข้างต้น (Onur Turhan's) ทำงานให้ฉันโดยมีการเปลี่ยนแปลงเล็กน้อยดังต่อไปนี้

C:\Users\MyName > heroku login

ป้อนอีเมล / รหัสผ่าน

C:\Users\MyName >ssh-keygen -t rsa -f id_rsa

สิ่งนี้สร้างสองไฟล์ (id_rsa และ id_rsa.pub) ในไดเรกทอรี c: \ Users \ MyName ของฉัน (ไม่ใช่ในไดเรกทอรี. ssh)

heroku keys:add id_rsa.pub
git clone git@heroku.com:some-heiku-xxxx.git -o heroku

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


5

คำสั่งเดียวใช้งานได้:

heroku keys:add

มันจะทำอย่างใดอย่างหนึ่งถ้ามันไม่อยู่


ลงมานี่ไม่ได้ตอบในบริบทที่มีข้อผิดพลาด ฉันลบที่มีอยู่สร้างใหม่และเพิ่มกุญแจและยังคงได้รับปัญหา คำแนะนำของคุณheroku keys:addไม่ใช่คำตอบที่สมบูรณ์
JGallardo

5

ฉันมีปัญหานี้เมื่อติดตั้ง TortoiseGIT ในเครื่องของฉัน หลังจากเปลี่ยนตัวแปรสภาพแวดล้อมGIT_SSHจาก

"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"

ถึง

"c:\Program Files (x86)\Git\bin\ssh.exe"

และทำตามบทช่วยสอนนี้ด้วยssh-keygenและkeys:addใช้งานได้!


กวดวิชาใดที่คุณติดตาม
eckes

หนึ่งขึ้นที่นี่จาก Onur Turhan
zooli

การใช้ ssh โดย Git IS เป็นทางออกที่ดีมาก มันเป็นจริงได้รับความซับซ้อนเข้าใจ plink / ประกวด / ฉาบที่นี่ ...
Stéphane

4

การผลักก็ช่วยฉันได้แล้วก็หยุดกระทันหัน

หาก heroku api กำลังประสบกับการหยุดทำงานคุณจะได้รับข้อผิดพลาดนี้เมื่อคุณพยายามผลักดัน

ตรวจสอบ:

https://status.heroku.com/

ก่อนที่จะหลุดพ้นจากแรงเกินไป


3

ลำดับการติดตาม

$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add

เมื่อดำเนินการคำสั่งที่สองมันจะขอให้ป้อนเพียงแค่กดEnter (คืน) สามครั้งและจะมีการเพิ่มคีย์


ผู้คนจำนวนมากมีคำตอบเดียวกันนี้แน่นอน และไม่ทำงานตามที่ระบุไว้
JGallardo

2

คำตอบที่ระบุข้างต้นใช้ได้ผล แต่ฉันพบว่าฉันต้องทำขั้นตอนเพิ่มเติมก่อนที่จะทำงาน

  1. ฉันออก id_rsa ไฟล์ทั้งหมด * และสร้างใหม่โดยใช้ SSH นี้คู่มือ
  2. จากนั้นฉันก็ทำลายแอพ heroku ลบไฟล์ ~ / .heroku / หนังสือรับรอง
  3. คำสั่ง 'heroku create' (และตั้งแต่ลบไฟล์ข้อมูลรับรองจะมีข้อความแจ้งให้คุณใส่อีเมล / รหัสผ่านของคุณ
  4. ในที่สุดพิมพ์ 'คีย์ heroku: เพิ่ม' และมันจะอัปโหลดไฟล์ ~ / .ssh / id_rsa.pub เริ่มต้น
  5. มันได้ผล! อืม .... YMMV แต่ฉันหวังว่านี่จะช่วยได้บ้างในขณะที่ฉันพยายามตลอดทั้งวันเพื่อหาทาง! ฮ่าฮ่า

2

สำหรับผู้ที่ลองทุกอย่างที่กล่าวถึงข้างต้นบน Windows 7 และยังไม่ได้ผลนี่คือสิ่งที่ฉันทำ: - เปิด GitBash.exe จากไดเรกทอรี Git C: \ Program Files (x86) \ Git \ (don ' ไม่เปิดพรอมต์คำสั่งซึ่งจะไม่ทำงาน) - เพิ่มรายการต่อไปนี้ตามที่กล่าวข้างต้นแต่คุณต้องลบ #

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes 
User joe@workstation.local

ตอนนี้ใช้git push heroku masterแล้วมันก็ใช้ได้ดี


upvoting นี้เช่นกัน ใช้เวลา 6 ชั่วโมงกับเมื่อวานและไม่รู้สึกว่านี่เป็นความรู้ที่ฉันสนใจเลย ฉันสามารถผลักดัน GitHub ผ่าน PowerShell และพร้อมรับคำสั่ง แต่ Git Bash ใช้ได้กับฉันสำหรับ Heroku เท่านั้น ตอนนี้มันทำงานได้ทุกครั้ง ฉันก็จบลงด้วยการลงชื่อเข้าใช้ heroku ก่อนคอมไพล์ผลัก heroku master อาจไม่จำเป็น แต่สำหรับตอนนี้มันเป็นความเชื่อโชคลางที่ทำให้ฉันทำมัน ฝันร้ายอะไร
JMDenver

1

ดูเหมือนคุณ ~/.ssh/authorized_keysไฟล์ไม่ได้ตั้งค่าอย่างถูกต้อง ตรวจสอบว่า:

  • มันอยู่ในเส้นทางที่ถูกต้อง
  • การอนุญาตของไฟล์คือ 0600
  • สิทธิ์ของ~/.sshคือ 0700

ฉันค่อนข้างใหม่ในสิ่งนี้ขออภัยถ้ามันจะฟังดูเป็นใบ้ แต่ไฟล์กุญแจ SSH สาธารณะของฉันเป็นเพียงกลุ่มตัวอักษร (คีย์หลักมาตรฐาน) โดยไม่มีข้อมูลอื่น ฉันได้รับไฟล์ SSH นี้เมื่อฉันติดตั้งคอมไพล์บนคอมพิวเตอร์ของฉัน ฉันคิดว่านี่จะเป็นคีย์ SSH สาธารณะแบบเดียวกับที่ฉันจะใช้ในการปรับใช้รหัส heroku ของฉัน หรือ heroku มีรหัส SSH สาธารณะที่ฉันต้องการสร้างหรือไม่
วิช

1
ใช่คุณสามารถใช้คีย์ SSH สาธารณะของคุณสำหรับโฮสต์ที่แตกต่างกันได้ ฉันไม่แน่ใจว่า Heroku ทำงานอย่างไร แต่ฉันเห็นได้ว่าคำตอบของฉันไม่ได้นำไปใช้ในกรณีนี้จริงๆ คุณอาจตรวจสอบว่าคีย์ของคุณได้รับการยอมรับจากเว็บอินเตอร์เฟสของพวกเขา หากทุกอย่างยังคงอยู่ให้ลองติดต่อทีมสนับสนุนของพวกเขา
cdhowie

ขอบคุณสำหรับคำแนะนำ! ฉันได้ติดต่อฝ่ายสนับสนุนของ heroku แล้ว ฉันจะอัปเดตเมื่อฉันมีคำตอบ
วิช

ตกลง. ฉันสนใจที่จะรับฟังปัญหาที่เกิดขึ้นเช่นกัน :)
cdhowie

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


1

ตรวจสอบ. ssh config สำหรับ heroku ไปที่โฟลเดอร์. ssh แล้วเปิดไฟล์ปรับแต่ง

cd ~/.ssh
subl config

'subl' ใช้สำหรับ Sublime Text แต่คุณสามารถใช้โปรแกรมแก้ไขที่คุณต้องการ ค้นหาบรรทัด "IdentityFile" และตรวจสอบให้แน่ใจว่ามีรหัสสาธารณะที่ไม่ใช่:

IdentityFile "/Users/ircmullaney/.ssh/my_ssh"

ไม่

IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"

นั่นทำเพื่อฉัน ฉันไม่แน่ใจว่าทำไมของฉันถึงมีรุ่นสาธารณะในไฟล์ปรับแต่ง แต่มันทำและมีการโยนข้อผิดพลาด:

Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.

1

ฉันยังคงมีปัญหาหลังจากลองใช้แนวคิดเหล่านี้ทั้งหมด นี่เป็นปัญหาของฉัน:

พื้นที่เก็บข้อมูล heroku ระยะไกลของฉันถูกระงับ ฉันรีเฟรชมันดังนี้

git remote -v

จากนั้นให้ลบ heroku ที่ผิด:

git remote rm heroku

จากนั้นเพิ่มรายการใหม่

git remote add heroku git@heroku.com:sitename.git

คุณสามารถรับชื่อไซต์ได้จากหน้าการตั้งค่า Heroku สำหรับแอพของคุณ โชคดี!


1

ปัญหาที่ฉันเผชิญคือใน Windows และเมื่อใดก็ตามที่ฉันเรียกใช้ "คีย์ heroku: เพิ่ม" มันเลือกคีย์ github ดังนั้นนี่คือขั้นตอนที่ฉันทำตามเพื่อแก้ไขปัญหา

  1. ไปที่ไดเรกทอรี. ssh ภายใต้โฟลเดอร์ "เอกสารและการตั้งค่า" และลบฮับคีย์ git
  2. เรียกใช้คำสั่งคีย์ heroku: เพิ่ม

คำสั่งดังกล่าวขอให้ฉันสร้างคีย์ใหม่และต่อไปนี้เป็นผลลัพธ์ไม่พบกุญแจสาธารณะที่มีอยู่ คุณต้องการสร้างหรือไม่ [Yn] Y กำลังสร้างกุญแจสาธารณะ SSH ใหม่ กำลังอัปโหลดคีย์สาธารณะ SSH C: / เอกสารและการตั้งค่า / ผู้ดูแลระบบ / .ssh / id_rsa.pub ... เสร็จแล้ว! อัญมณี 'Heroku' ได้รับการคัดค้านและแทนที่ด้วย Heroku Toolbelt ดาวน์โหลดและติดตั้งจากhttps://toolbelt.heroku.com

  1. รันคำสั่งคีย์ heroku อีกครั้ง: เพิ่ม

คำสั่งดังกล่าวจะไม่ให้ผลลัพธ์ต่อไปนี้พบกุญแจสาธารณะที่มีอยู่: C: / เอกสารและการตั้งค่า / ผู้ดูแลระบบ / .ssh / id_rsa.pub การอัปโหลดกุญแจสาธารณะ SSH C: / เอกสารและการตั้งค่า / ผู้ดูแลระบบ / .ssh / id_rsa.pub .. เสร็จแล้ว

  1. ตอนนี้ใช้ git push heroku master

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


1

ฉันกำลังประสบปัญหาเดียวกัน ทำตามขั้นตอนเหล่านี้ควรช่วย:

  1. ก่อนเข้าสู่ระบบ: เข้าสู่ระบบ heroku
  2. ล้างคีย์ทั้งหมด: คีย์ heroku: clear
  3. ลบไฟล์ทั้งหมดในโฟลเดอร์ท้องถิ่น ( .pubไฟล์ทั้งหมดและknow_host) ใน.ssh/ folder
  4. ลงชื่อเข้าใช้อีกครั้ง: ล็อกอิน heroku - คุณจะแจ้งให้ทราบโดยไม่ใช้คีย์ดังนั้นให้ทำตามคำแนะนำบนหน้าจอ

ไม่ทำงานเพื่อแก้ไขปัญหา ฉันลงชื่อเข้าใช้เพิ่มรหัสสำเร็จแล้วและยังได้รับPermission denied (publickey).
JGallardo

ทำไมเราต้องลบไฟล์ทั้งหมดในโฟลเดอร์. ssh
Starx

0

ฉันแค่อยากจะเพิ่มว่าไดเรกทอรีไม่จำเป็นต้อง C: \ Users \ [ชื่อผู้ใช้] \. ssh มันเป็นไดเรกทอรีที่คุณสร้างกุญแจสาธารณะของคุณ

เช่นไดเรกทอรีบ้านของฉันใน Windows เปลี่ยนเป็น C: \ [ชื่อผู้ใช้] โฮมไดเร็กตอรี่ของคุณในโฟลเดอร์ย่อย. ssh เป็นตำแหน่งที่ดีที่สุดและเป็นไปได้มากที่สุดที่คุณอาจสร้างคีย์ของคุณ คุณสามารถตรวจสอบไดเรกทอรีบ้านของคุณใน Windows ด้วยคำสั่ง:

    echo %HOMEPATH%

0

หากคุณต้องการใช้ "sudo" ตัวอย่าง:

sudo git clone git@heroku.com......... -o heroku

คุณควรสร้างคีย์ ssh สำหรับผู้ใช้รูทของคุณ

sudo su
cd /root/.ssh  
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub

และมันจะทำงาน

หากคุณไม่ได้ใช้ผู้ใช้รูทให้สร้างคีย์ ssh ในไดเรกทอรีผู้ใช้ของคุณแทน

cd /home/user/.ssh

ขออภัยถ้าประโยคของฉันเกิดความสับสน ...



0

ในตอนแรกตรวจสอบให้แน่ใจว่าไฟล์ที่ซ่อนอยู่นั้นปรากฏใน Mac ของคุณ ถ้าไม่ทำ:

  • เปิดเทอร์มินัลแล้วพิมพ์ defaults write com.apple.Finder AppleShowAllFiles TRUE
  • killall Finder

ขั้นตอนถัดไป:

  • กำลังจะUsers/user_name/.ssh/ลบไฟล์ทั้งหมด
  • กำลังเปิดเทอร์มินัลประเภท ssh-keygen -t dsa
  • แล้วก็ heroku keys:add ~/.ssh/id_dsa.pub

NB ฉันทำมันใน Mac OSX 10.7.2 Lion แม้ว่าขั้นตอนควรจะเหมือนกันในผู้อื่นด้วย


0

ฉันมีปัญหานี้เช่นกัน ฉันใช้ Mac OSX วิธีที่ฉันแก้ไขคือการเข้าสู่ระบบในฐานะผู้ดูแลระบบ

sudo su

รหัสผ่าน


0

ทางออกของ dmajkic ช่วยฉันในที่สุด:

สำหรับผู้ใช้ Windows อาจหมายถึง: ลูกค้า git ไม่พบกุญแจของคุณ ตรวจสอบคีย์ใน c: \ Users \ UserName.ssh \ and! ตัวแปรสภาพแวดล้อม HOME = c: \ Users \ ชื่อผู้ใช้ \


0

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน ไม่ได้เพิ่มไซต์ heroku เข้ากับโฮสต์ที่คุณรู้จัก ไปที่ window-other- show view-git-git repository จากนั้นโคลนที่เก็บ เมื่อคุณโคลนให้ลบที่เก็บที่เพิ่งสร้างขึ้นแล้วนำเข้าจากเมนูไฟล์ ทำสิ่งนี้ตั้งแต่เมื่อคุณโคลนที่เก็บมันจะไม่เพิ่มลงในมุมมอง explorer ตอนนี้คุณควรมีที่เก็บ git และมุมมอง explorer

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