git push heroku master Permission denied (publickey). 치명적 : 원격 끝이 예기치 않게 끊김


85

약간의 좌절을 용서해주십시오. Heroku는 SO를 고객 지원으로 사용하고 있기 때문에 계속 확인하려고 노력할 것입니다.

지난 5 시간 동안 애플리케이션을 게시하려고했지만 항상 키에 문제가 발생했습니다. 나는 수십 개의 기사를 읽고 어리 석고 완전히 불투명 한 과정에서 Heroku가 망가진 곳을 파악하기 위해 팁을 하나씩 시도했습니다.

내 사용 사례는 그리 어렵지 않습니다. heroku 앱에 대한 새 키 쌍을 만들었습니다. 해당 키를 내 키로 설정했습니다.

  > heroku keys
  === travis@xxxx.com Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com

로그인하여 문제없이 응용 프로그램 (어떤 종류의 응용 프로그램이 아닌 git repo를 만드는 것처럼 보이므로 어리석은 이름)을 "만들"수 있습니다. 하지만 * 괴롭히는 * 마다 앱을 푸시하려고하면 다음과 같은 결과가 나타납니다.

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

나는 WTF가 진행되고있는 것에 대한 통찰력이 없습니다. 나는 의지없이 키보드에 머리를 부딪 히고 있지만 Google의 전능 한 신이 대답 할 수 있기를 바랍니다. 그리고 구글은 그것에 대답하지 않습니다. (글쎄요, 제가 그것을 되 찾을 게요, 저는 이것에 대답하는 12 가지 방법을 보았습니다).

쉬운 시스템의 경우 이것은 농담입니다. 나는 Heroku의 아이디어가 마음에 들지만, 5 명을 택한 후에는 아무 일도하지 않고 , 아마도 잘못된 선택이라고 생각합니다.


7
우리가 Heroku에 제공하는 고객 지원은 일류 조잡함을 알려드립니다.
Robert Harvey

1
나는 SO에서 답변의 질에 감명을받은 적이 없습니다. 아무리 기술적이더라도 제품에 대한 고객 지원을 제공하는 것은 절름발이라고 생각합니다. 개인 계정 정보를 제공해야하는 경우 어떻게됩니까? 내가 세상과 공유하고 싶은 것이 정확히 아닙니다 (원래 게시물을 수정해야 할 때 깨달았 듯이).
Travis Jensen

당신은 참조했던 이 질문을 ? 특히 공개 키를 git에 등록하는 부분은 무엇입니까?
Ken White

7
같은 문제, 여기에 해결책이 있습니다. http://www.whatibroke.com/?p=284

1
Remi의 연결된 솔루션이 저에게 효과적이었습니다.
Deborah

답변:


149

웹에는 다양한 솔루션이 있습니다. 사용 가능한 옵션을 하나의 게시물로 압축하려고합니다. 모든 단계 후에 다시 연결을 시도하십시오.

  • 1 단계 : Heroku에 공개 키 추가 시도

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • 2 단계 : 새 SSH 키 집합을 생성 한 다음 첫 번째 단계를 다시 시도합니다.

    https://help.github.com/articles/generating-ssh-keys

  • 3 단계 : 구성 파일 확인 및 / 또는 수정

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User jsmith@gmail.com
    
  • 4 단계 : git에서 heroku 리모컨을 제거하고 연결을 다시 만들고 heroku create를 통해 리모컨을 추가하는 것은 새 저장소에 대한 옵션 일뿐입니다. 원래 만들려고 시도한 이전 저장소를 삭제해야합니다.

     $ git remote rm heroku
     $ heroku create
    
  • 5 단계 : Heroku Toolkit 재설치


10
1 단계가 나를 위해 트릭을했습니다! (하지만 Heroku로 푸시하기 전에 내 컴퓨터와 Github의 SSH 키를 다시 만들었습니다.) 감사합니다!
ATSiem

1
새로 설치하고 모든 것을 두 번 신중하게 수행 했음에도 불구하고 이것 중 어느 것도 나를 위해 일하지 않았습니다. 결국 모든 것이 작동하도록 만든 것은 내 GitHub 키와 Heroku 키가 동일한 지 확인하는 것이 었습니다. Heroku가 GitHub에 의존한다는 사실을 알아 차리지 못했지만 어떻게 든 문제가 해결되지 않는 한 그게 왜 차이를 만들 었는지 이해하지 못합니다. 키는 GitHub의 계정 설정에서 변경할 수 있습니다. 나는 당신이 이것을 당신의 대답에 추가해야한다고 생각합니다.
temporary_user_name

1
IdentityFile 줄이 개인 ssh 키 여야한다고 생각합니다. stackoverflow.com/a/8874946/2816571
Paul

2
그랬어 heroku create? git heroku create내가 아는 한은 아무것도 아닙니다.
Michael Dorst

1
와. 이 경험에 대해 말할 수있는 즐거운 말이 없습니다. git, github 제거 / 재설치 및 putty를 msysgit로 교체하는 등 수많은 레시피를 따랐습니다. 1-3 단계가 마침내 해냈지만 변경 사항은 github ssh_config에 있어야합니다. 문제없이 여러 번 내 github 키를 삭제하고 재설정 한 후 heroku 프로세스가 정말 답답했습니다.
wilk

13

heroku 키와 github 키가 동기화되지 않았습니다.

  • 사용할 키를 결정합니다 (예 : heroku_rsa와 같은 새 키를 만드는 것이 좋습니다).

  • github에 키를 추가하십시오.

  • 다음을 사용하여 heroku에 동일한 키를 추가합니다 .heroku keys:add


4
정말, 정말, 정말 내가 4 시간 전에이 대답을 읽을 수 있었으면 좋겠다. 그 과정에서 많은 것을 배웠다고 생각했지만 모두 나쁘지는 않습니다.
temporary_user_name

두 개의 다른 Heroku 계정이 있습니다 (하나는 직장 이메일, 직장 프로젝트, 다른 하나는 프리랜서 프로젝트 용 개인 이메일 사용). Heroku는 두 가지 모두에 동일한 키를 사용하도록 허용하지 않습니다. 그렇다면 두 가지 모두에 내 Github 키를 어떻게 사용할 수 있습니까? (그리고 왜 Heroku가 내 Github 키를 사용해야하는 이유는 무엇입니까? Heroku는 Github와 무슨 관련이 있습니까? Github를 사용하지 않았다면 어떻게됩니까?) 너무 혼란 스럽습니다
callum

매력처럼 일했다! 감사!
Shashank

2

나는 같은 문제에 직면했고 이것이 무슨 일이 일어나고 있는지에 대한 나의 이론 입니다.

오래 전에 Heroku에 가입하여 github 공개 키를 제공했습니다. 평소를 시도하면 git push heroku master에서 찾은 개인 키를 찾습니다 ~/.ssh/github_rsa. 그런 다음 게시 한 메시지와 함께 자동으로 실패합니다.

그러나 나중에 플래그를 ssh사용하여 -i"ID 파일"(예 : 개인 키)을 지정 하는 다른 서버에 접속 하려고 시도했으며 개인 키에 대한 암호를 입력하라는 메시지가 표시되었습니다. 개인 키를 "잠금 해제"하면 git push heroku master명령이 작동합니다. 몇 가지 결론 :

  • sshID 파일에 대한 암호를 묻는 메시지가 표시 되지만 git그렇지 않습니다.
  • 같은 다른 방법으로 ID 파일을 잠금 해제하면 사용을 ssh위해 잠금 해제 된 상태로 유지됩니다 git.
  • 일반적인 unix 명령을 포함하여 ID 파일에서 암호 보호를 영구적으로 제거하는 방법에 대한 문서 가없는 것 같습니다 keytool.
  • 새 공개 / 개인 키 쌍을 만드는 위의 솔루션은 문제인지 모른 채이 암호 문제에 대한 해결 방법 인 것 같습니다.


1

저에게 문제는 ssh-agent가 백그라운드에서 실행되고 관련 개인 키가 추가되지 않은 것 같습니다.

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

나는 또한 github (수동) 및 heroku에 공개 키를 추가해야했습니다.

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

0

다른 해결책으로 당신을 위해 작동하지 않는 경우, 당신이 함께 리눅스 쉘에 로그인되어 있는지 수 귀하의 계정 및 하지루트 계정.

이렇게하면 ssh 키의 소유자가 아닌 사용자로 실행중인 경우 git은 인증 할 잘못된 키를 찾습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.