키 지문 때문에 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 "를 실행 하면

기존 공개 키를 찾았습니다. /Users/michele/.ssh/id_rsa.pub ssh 공개 키 업로드 /Users/michele/.ssh/id_rsa.pub! 지문이 이미 존재합니다. Heroku 계정 당 하나의 ssh 키를 사용하십시오

도와주세요! 이것은 너무 실망 스럽습니다. 무슨 일인지 모르겠습니다! 감사합니다

답변:


288

나는 같은 문제가 있었고, 나는이 게시물과 같은 종류의 다른 사람들을 성공없이 따랐다 :-((

마지막으로 해결책을 찾았습니다. 내 컴퓨터에 새 rsa ID를 추가해야했습니다!

그래서 먼저 새로운 rsa 키를 만들었습니다.

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

그런 다음 내 컴퓨터에 추가했습니다.

ssh-add ~/.ssh/id_rsa_heroku

그리고 마지막으로 헤 로쿠에게

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

그 후

git push heroku master

매력처럼 일했다!

도움이 되었기를 바랍니다.


47
이것은 나에게 정말 가까웠다. 그러나 한 가지 더 있었다. 헤 로쿠 계정이 두 개있었습니다. 첫 번째는 내 컴퓨터의 기본 SSH 키를 추가했습니다. 두 번째 계정을 고치려고했지만 첫 번째 계정에서 기본 키를 제거 할 때까지 걸리지 않습니다. SSH-AGENT는 기본적으로 첫 번째 키를 보내서이 문제를 일으 킵니다. 해결 방법은 각 계정에 대한 heroku (기본값이 아님)에 대한 특정 키를 만드는 것입니다.
Tom Carchrae

13
@TomCarchrae와 같은 문제가있었습니다. 로 영구적으로 체포 된 것으로 보이는 계정에서 로그 아웃 heroku logout하고 다른 계정에 로그인 한 후 해당 계정에서 기본 RSA 키를 삭제했습니다. 그 후 나는이 새로 생성 된 키를 사용할 수있었습니다.
Ross Allen

14
개인적으로 나는 https://github.com/ddollar/heroku-accounts (Heroku의 여러 계정 관리자)를 사용하고 있기 때문에 ssh-add ~/.ssh/id_rsa_heroku내 것과 동일 합니다. ssh-add ~/.ssh/identity.heroku.foo
user664833

1
염두에 두어야 할 또 다른 사항-SSH 키가 너무 많으면 키를 순서대로 시도하기 때문에 로그인 할 수 없습니다 (그리고 로그인에서 너무 많은 실패가 발생 함). 이것은 ssh-agent의 결함 인 것 같습니다 (어쨌든 우분투에서는 있지만 다른 구현도 가정합니다). 따라서 머리카락을 뽑으려면 ~ / .ssh 디렉토리를 이동하고 새 디렉토리를 시작하십시오 (키를 하나씩 당길 수 있습니다).
Tom Carchrae

7
~ / .ssh / config에 원하는 키를 가리키는 heroku.com에 대한 호스트 항목을 추가하여 어떤 키가 전송되는지에 영향을 줄 수 있습니다. 기본 키를 계속 사용하려고 시도했지만 실패했기 때문에 빠른 수정이었습니다. 여러 계정의 경우에는 도움이되지 않습니다.
dnewcome

61

나도 여러 개의 키와 여러 헤 로쿠 계정을 가지고 있기 때문에 몇 달마다이 문제가 발생합니다. 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

걱정 마세요! 실제로 키를 삭제하지 않고, 예를 들어, heroku로 푸시하려고 할 때 ssh-agent가 자동으로 사용하려는 키만 변경합니다. 필요에 따라 키를 쉽게 추가하고 삭제할 수 있으므로이 문제에 좌절하면 가장 쉽게 해결할 수있는 방법은 모든 키를 삭제하고 현재 사용하려는 키만 다시 추가하는 것입니다.

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

첫 번째 방법을 시도한 경우 (Heroku 리모컨으로 푸시하려고 할 때 Permission Denied (publickey) 오류가 발생하는 경우) heroku keys : add 명령을 다시 실행하는 것을 잊었을 것입니다. 어쨌든 대단히 감사합니다! 이것은 나를 위해 그것을했다.
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/*

사이의 선택에 의하여 herokuheroku-alt의 원격에 .git/config당신이 어떤 자격 증명을 사용하는 프로젝트를 관리 할 수있는 특정 프로젝트의 파일입니다.


1
예, 그것은 저에게도 문제였습니다. 동일한 클라이언트에서 두 개의 Heroku 계정에 액세스 감사.
Bernard

이 방법을 시도하고 있지만 "Host heroku-alt"오류가 발생 Host heroku-alt not found: 3(NXDOMAIN)합니다. 이것을 Mountain Lion 터미널에 싣고 있습니다. ~/.ssh/config존재하지 않는 .pub파일들과 하나만 known_hosts있습니다. 그리고 아이디어?
JVG

@Jascination ~ / .ssh / config를 생성하고 답변에 나열된 내용을 입력해야합니다. 완료되면 파일을 저장하면 파일 HostHostName, 및 IdentityFile행 이 포함 됩니다. 그런 다음 제대로 작동합니다.
Daniel X Moore

3
우수한! 이 기술은 매우 우아합니다!
kinopyo

남자! 당신은 굉장합니다. 단계별로 실행하면 마침내 안심이됩니다. 감사합니다 !!
softvar

14

여기에 Heroku 문서 또는 다른 질문에 대한 답변이 부족한 매우 명확한 설명이 있습니다. 최소한 모든 정보가 한 곳에 나타나지 않는 것 같습니다. 또한 계정 도구에서 지원하지 않는 방식으로 문제를 이해할 수 있습니다.

Heroku는 두 가지 방법으로 당신을 식별합니다 :

첫 번째는 .git / config에 있습니다.

[heroku]
    account = acccount_name

이것은 당신이 사용하여 기본 작업을 수행 할 수있는 것 같습니다 heroku

heroku가 당신을 식별하는 두 번째 방법은 ssh (git push)를 사용하는 조작입니다. Heroku는 https://devcenter.heroku.com/articles/keys에 명시된대로 ssh 키로 사용자를 식별합니다.

이 키 쌍은 강력한 암호화에 사용되며 코드 변경을 푸시 할 때 개발자로 고유하게 식별됩니다.

따라서 작업하는 각 heroku 계정은 ssh를 사용할 때 heroku에 다른 키를 보내야합니다. 자습서를 따라 ssh 키를 작성하십시오.

열쇠는 SSH가 Heroku 계정마다 다른 키를 사용하도록합니다. 이것을 어떻게 구성합니까? 다음 두 가지를 수행해야합니다.

1) .ssh / config가 가로 채서 재구성 할 '더미'도메인을 만들어야합니다. 이것은 ssh에게 원하는 '실제'도메인과 사용할 특수 ssh 키를 알려줍니다.

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

2) git push를 사용할 때 사용하도록 .git / config를 변경하십시오. heroku.com 대신 .ssh / config에서 설정 한 더미 도메인을 사용하십시오.

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


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

그게 다야 :) 조금 복잡하고 동시에 조금 간단합니다. 이 정보를 발견하기 위해 벽과 시행 착오에 머리를 두드리는 데 3 년이 걸렸습니다. 어딘가에 명확하게 문서화되어야하지만 적어도 시작입니다.


독특한 호스트 이름은 내 문제였습니다. 매우 많은 픽셀 지구 감사합니다.
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
이 링크에서 지침을 요약 할 수 있습니까? 우리는 여기에 링크 전용 답변을 피하려고합니다.
왁스 독수리

여기에서는 여러 키를 관리하는 방법이 아닌 키를 생성하는 방법 만 설명합니다.
Macario

3

제 경우에는 heroku keys이미 올바른 키가 나열되어 있습니다. 그래서 내가해야 할 일은 ssh-add /path/to/that/key달렸고 모든 것이 잘 작동하기 시작했습니다.


2

또한 두 개의 Heorku 계정이 있으며이 문제를 해결하기 위해 내 프로젝트의 공동 작업자로 주 계정 (Heroku에서 자동으로 사용하는 계정)을 "초대"했습니다.


1

Windows 사용자를위한 솔루션을 추가하고 싶지 않습니다.

  1. 첫 번째 "퍼티 키 생성기" 다운로드

  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.