키 지문 때문에 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/*

사이의 선택에 의하여 heroku와 heroku-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를 생성하고 답변에 나열된 내용을 입력해야합니다. 완료되면 파일을 저장하면 파일 Host에 HostName, 및 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.