Git을 사용할 때 Permission denied (publickey) 오류를 해결하는 방법은 무엇입니까? 그것은 나 에게이 오류를

Mac Snow Leopard를 사용 중이고 방금 설치했습니다. git .

나는 방금 시도했다

git clone git@thechaw.com:cakebook.git

그러나 그것은 나 에게이 오류를 준다 :

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

내가 무엇을 놓치고 있습니까?
또한 ssh-keygen통과 단계는 없지만 여전히 동일한 오류로 시도했습니다 .



답변

사용자가 이전에 ssh 공개 / 개인 키 쌍을 생성하지 않은 경우

이 정보는 The Chaw에서 작동하지만 SSH pubkey 인증을 지원하는 다른 모든 git 저장소에 적용될 수 있습니다. ( 예를 들어 gitolite , gitlab 또는 github 참조 )

먼저 자신의 공개 / 개인 키 쌍을 설정하여 시작하십시오. 이것은 DSA 또는 RSA를 사용할 수 있으므로 기본적으로 설정 한 모든 키가 작동합니다. 대부분의 시스템에서 ssh-keygen을 사용할 수 있습니다.

  • 먼저 .ssh 디렉토리에 cd하고 싶을 것입니다. 터미널을 열고 다음을 실행하십시오.

    cd ~/.ssh && ssh-keygen

  • 다음으로 클립 보드에 복사해야합니다.
    • OS X에서 다음을 실행하십시오. cat id_rsa.pub | pbcopy
    • Linux에서 다음을 실행하십시오. cat id_rsa.pub | xclip
    • Cygwin / Git Bash를 통해 Windows에서 다음을 실행하십시오. cat id_rsa.pub | clip
  • 웹 사이트를 통해 계정에 키를 추가하십시오.
  • 마지막으로 .gitconfig를 설정하십시오.
    • git config --global user.name "bob"
    • git config --global user.email bob@...
      (구성이 다시로드되도록 명령 줄을 다시 시작하는 것을 잊지 마십시오)

복제하고 체크 아웃하는 것이 좋을 것입니다.

자세한 내용은 https://help.github.com/articles/generating-ssh-keys(@Lee Whitney 덕분에) 에서 확인할 수 있습니다.

사용자가 이전에 ssh 공개 / 개인 키 쌍을 생성 한 경우

  • github 또는 gitlab 계정 설정에서 인증 된 키 확인
  • 로컬 컴퓨터에서 어떤 관련 개인 키를 연결해야하는지 결정

eval $(ssh-agent -s)

  • 키 위치를 정의

ssh-add ~/.ssh/id_rsa


답변

다음을 통해보다 광범위한 문제 해결 및 자동 수정을 수행 할 수 있습니다.

ssh -vT git@github.com

출처 : https://help.github.com/articles/error-permission-denied-publickey/


답변

이 오류는 Git 읽기 전용 URL 대신 SSH URL (읽기 / 쓰기)에 액세스하지만 해당 리포지토리에 대한 쓰기 액세스 권한이없는 경우 발생할 수 있습니다.

때로는 서버에 배포하는 등 자신의 리포지토리를 복제하려는 경우가 있습니다. 이 경우 실제로는 읽기 전용 액세스 만 필요합니다. 그러나 이것이 자신의 저장소이므로 GitHub는 원하는 경우 SSH URL을 표시 할 수 있습니다. 이 상황에서 원격 호스트의 공개 키가 GitHub SSH 키에 없으면 액세스가 거부 되어 예상되는대로 있습니다.

SSH URL로 쓰기 권한이없는 다른 사람의 저장소를 복제하려고 할 때도 마찬가지입니다.

즉, 리포지토리를 복제 전용으로 사용하려는 경우https://github.com/{user_name}/{project_name}.git SSH 키 ( ) 대신 HTTPS URL ( )을 사용 git@github.com:{user_name}/{project_name}.git하면 불필요한 (필수) 공개 키 유효성 검사를 피할 수 있습니다.


업데이트 : GitHub가 HTTPS를 기본 프로토콜로 표시하고 있으며 이로 인해 SSH URL의 오용 가능성을 줄일 수 있습니다.


답변

github 도움말 링크 는이 문제를 해결하는 데 도움이되었습니다. ssh 키가 ssh-agent에 추가되지 않은 것 같습니다. 이것이 내가 결국 한 일입니다.

명령 1 :

ssh-agent가 사용 가능한지 확인하십시오. 이 명령은 백그라운드에서 ssh-agent를 시작합니다.

eval "$(ssh-agent -s)"

명령 2 :

SSH 키를 ssh-agent에 추가하십시오.

ssh-add ~/.ssh/id_rsa


답변

같은 오류 보고서가 있습니다.

대신 HTTP를 사용하여 수정했습니다. 테스트 PC에 “SSH 키”를 설정하고 싶지 않기 때문에.

복제시 URL을 HTTP로 변경하십시오.

git clone https://github.com/USERNAME/REPOSITORY.git

내 문제는 조금 다릅니다 . 기존 로컬 저장소를 원격에 추가 할 때 URL을 설정했습니다.

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

수정하려면 URL을 HTTP로 재설정하십시오.

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW, 당신은 명령을 사용하여 URL을 확인할 수 있습니다 :

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

이것이 나와 같은 사람을 도울 수 있기를 바랍니다. :디


답변

이것은 나를 위해 작동합니다 :

ssh-add ~/.ssh/id_rsa


답변

(적어도 일부 프로젝트의 경우) ssh 키가있는 github 계정이 있어야합니다 .

인증 에이전트 ( ssh-add -l )에 나열된 키를
확인하십시오 (표시되지 않는 경우 ssh-add / path / to / your / key를 사용하여 기존 키 중 하나를 추가하십시오 (예 : ssh-add ~ /.ssh/id_rsa ))
(키가없는 경우 먼저 키를 만듭니다. http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html을 참조하십시오. 또는 그냥 구글 ssh-keygen)

github 계정과 연결된 키가 있는지 확인하려면 :

https://github.com/settings/ssh로 이동 하십시오.

1 분 전에 ssh-add -l 을 입력했을 때 본 해시 중 하나와 일치하는 해시 키가있는 하나 이상의 키가 표시됩니다 .

그렇지 않은 경우 추가 한 후 다시 시도하십시오.