Github 권한 거부 : ssh add 에이전트에 ID가 없습니다


148

이것은 GitHub에 처음 액세스하는 것으로 콘솔 사용 경험이 없습니다. Bash를 사용하는 MacBook에 있습니다. GitHub에 액세스하려고하면 다음과 같은 결과가 나타납니다.

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

권한 거부에 대한 Github 페이지의 지침을 따르려고했습니다.

사용 ssh -vT git@github.com하면 다음과 같은 결과가 나타납니다.

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.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: Roaming not allowed by server
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: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

그런 다음 eval "$(ssh-agent -s)""에이전트 pid 2314"를 ssh-add -l리턴 하지만 "에이전트에 ID가 없습니다"를 리턴합니다.

그리고 그것이 내가 붙어있는 곳입니다.


당신이 할 SSH 키 생성을? github 계정과 함께 나열되어 있습니까? Mac에 키가 있습니까?
Etan Reisner

나는 그 질문에 대한 답을 찾고 있었고 (이 전체 시스템에 익숙하지 않음) 이것을 발견했다 : mac.github.com 그것은 내 모든 문제를 해결했다. 나는 그것을 강력히 추천합니다. 올바른 방향으로 밀어 주셔서 감사합니다, Etan!
Dark

4
이 질문에 대한 답변을 추가하고 (문제 해결 방법에 대한 자세한 내용과 함께) 답변을 수락 할 수 있습니다.
Etan Reisner

좋아, 나는 대답을 제출했다. 그래서 나는 2 시간 안에 그것을 받아 들일 수 있다고 말합니다.
Dark

답변:


194

답변에 대한 자세한 내용 .

때 요약하면, ssh-add -l반환 "에이전트가 어떤 정체성이 없다", 그것은에 의해 사용되는 키를 의미합니다 ssh(예 : 파일에 저장 ~/.ssh/id_rsa, ~/.ssh/id_dsa되지 않았거나, 그들에게 알려져 있지 않습니다되며, 등) ssh-agent인증 에이전트, 또는 자신의 권한 있다고하는, 월드 쓰기 가능과 같이 잘못 설정되었습니다.

당신의 키가 없거나 어떤을 생성하지 않은 경우, 사용하는 경우 ssh-keygen -t rsa, 다음 ssh-add을 추가 할 수 있습니다.

키가 존재하지만 알려지지 않은 ssh-agent경우 (비표준 폴더에있는 것처럼) 키 ssh-add /path/to/my-non-standard-ssh-folder/id_rsa를 추가하십시오.

또는에  문제가있는 경우이 답변을 참조하십시오 .ssh-addssh-agent


4
훌륭하고 짧은 답변으로 연결되는 @Doedoe에게 감사합니다. 그리고 keyS (즉, 여러 개의 Git 계정)를 가진 사람들에게는 ssh-add /path/to/keyX특히 비표준 이름이있는 경우 각각에 대해 사용해야 할 수도 있습니다 . 자세한 내용은 여기 : stackoverflow.com/questions/3225862/… (좋은 답변)
tuk0z

고마워 나는 여기에 붙어 있습니다 ..하지만 문제의 권한 부분을 해결 한 후 ssh-add 다시 실행해야한다는 것을 깨달았습니다 . 그 후에 ssh -vT git@github.com는 효과가 없었습니다. 위에서 언급 한 주석 자와 같은 절대 경로 를 추가해야했습니다 . 그런 다음, 모두 그레이비였습니다.
jungledev


111

이 시도:

ssh-add ~/.ssh/id_rsa

나를 위해 일했다


5
안녕하세요, SO에 오신 것을 환영합니다. 동료 사용자가 진행 상황을 이해할 수 있도록 코드를 설명하십시오. 건배.
크 툴후

4
재부팅하면 키가 사라지고 다시 'ssh-add'해야합니다.
Louwki

@Louwki 그래 ... 정말 짜증나. 당신은 그 주위에 방법을 알고 있습니까?
크리스 Cirefice

3
@ChrisCirefice는 매개 변수로 ssh-add를 수행하여 키 체인에 영구적으로 추가합니다. ssh-add -K ~ / .ssh / [your-private-key]
Louwki

1
필자의 경우 개인 키에 대한 파일 권한이 잘못되었습니다. 에 의해 고정 chmod 600 ~/.ssh/id_rsa후,ssh-add ~/.ssh/id_rsa
모르테 Ziyae

39

macOS Sierra 및 High Sierra 및 Catalina의 2019 년 답변 :

추신 : 다른 답변의 대부분은 새로운 ssh 키를 만들도록 할 것입니다 ...하지만 그렇게 할 필요는 없습니다 :)

https://openradar.appspot.com/27348363 에 자세히 설명 된 것처럼 요세미티까지 macOS / OS X는 명령으로 추가 된 SSH 키를 기억하는 데 사용됩니다.ssh-add -K <key>

다음은 작동하기 위해 취해야 할 4 가지 단계입니다.

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2 : 에 다음을 추가하십시오~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3 : osxkeychain 도우미를 사용하는 gitconfig 항목을 제거하십시오.

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4 : 터미널을 다시 시작하여 적용하십시오.


3
큰 대답, 나는 이것을 직접 언급하려고했습니다! 분명히 OS X 10.12.2 이상은 자동으로 ssh-agent에 ID를로드하지 않습니다 (개인적으로는 정말 바보 같은 사용성 결정이라고 생각하지만 보안 함의를 이해합니다). 따라서 SSH 구성을 수정하여 수동으로로드해야합니다. 인터넷을 검색하는 데 1 시간이 아닌 오류 출력이 더 나은 해결책으로 이어지기를 바랍니다.
크리스 Cirefice

12

나는 같은 문제로 잠시 고착되어 결국 해결되었습니다.

내 문제 : 푸시를 실행할 수 없습니다. 리모컨을 사용하여 확인하고 볼 수 git remote -v있지만 (을 사용하여 ) 실행 git push origin master하면 : Permission denied (publickey). fatal: Could not read from remote repository.등 이 반환되었습니다 .

내가 해결 한 방법 :

  • 사용하여 생성했습니다ssh-keygen -t rsa . 키 파일의 이름을 입력하는 것은 쓸모가 없었습니다.
  • 그때 수 (자식을) 키 추가 : ssh-add /Users/federico/.ssh/id_rsa성공적으로 반환Identity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • 이 도움말 페이지를 사용하여 SSH 키를 github에 추가했습니다 .
  • Github의 'Permission denied publickey'도움말 페이지에서 모든 명령을 시도했지만 ssh-add -l이전 단계를 실행 한 후 명령 만 작동 / 유용 해 보였으므로 키를 성공적으로 반환했습니다. 마지막 단계 는 GitHub 페이지에서 공개 키를 확인할 위치를 보여줍니다. 이 명령은 모든 키를 확인하는 데 도움이됩니다 ls -al ~/.ssh.

그런 다음 push 명령이 결국 작동했습니다!

이것이 도움이되기를 바랍니다! 모두에게 행운을 빕니다.


7

다음 명령을 실행하십시오.

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

Github 계정으로 이동하십시오 : https://github.com/settings/profile

1) 클릭 : SSH 및 GPG 키

2) 새로운 SSH 키 및 붙여 넣기

3) SSH 키 추가

끝난!


예-id_rsa.pub 파일을 만드는 다른 단계를 겪은 경우 해당 pbcopy 줄을 복사하여 붙여 넣은 다음 키를 클립 보드에 복사하고 @zouhair 지침을 따르십시오-github은 키를 알아야합니다. 특히 2FA를 사용하는 경우.
davidrynn '28

현재 문서에서 git이 github_rsa / github_rsa.pub를 생성한다고 말하면 약간 혼란 스럽습니다. 내 /.ssh 디렉토리에 둘 다 있지만 "권한을 얻지 못하는"것 같습니다. id_rsa를 사용하여 동일한 디렉토리에 사본을 만들었습니다.
Mark Löwe

6

우선
Mac의 터미널이나 창에서 사용하는 모든 유형의 명령에 따라 ssh 디렉토리로 이동해야합니다.

cd ~/.ssh

이제 ssh에
있습니다. 모든 프로젝트와 관련된 모든 ssh 키 / 파일을 찾을 수 있습니다. 이제 다음 명령을 입력하여 사용 가능한 ssh 키가 있는지 표시하십시오.

ls

이것은 당신에게 사용 가능한 모든 ssh를 보여줄 것입니다. 제 경우에는 두 가지가있었습니다
. ssh를 추가하려면 에이전트를 시작해야합니다. 이 유형 다음 명령

eval "$(ssh-agent -s)"

이제 마지막 으로이 에이전트 유형에 ssh를 추가하여 명령을 따릅니다.

ssh-add ~/.ssh/your-ssh

바꾸다

your-ssh를 ssh 파일 이름으로 바꾸십시오. ls command


5

이로 인해 새로운 터미널이 발생할 수 있으며 에이전트 ID가 다릅니다. 에이전트의 개인 키를 추가해야합니다

$ ssh-add <path to your private key>

1

내가 깨달은 또 다른 요소는 일반적으로 .ssh 폴더가 Mac OS X / Users /의 루트 폴더에 생성된다는 것입니다. 다른 폴더에서 ssh -vT git@github.com을 사용하려고하면 올바른 키를 추가 한 경우에도 오류가 발생합니다.

성공적으로 인증하려면 현재 폴더에서 키를 다시 추가해야합니다 (ssh-add 'id_rsa의 올바른 경로 id_rsa') (Git에서 이미 키를 프로파일에 업로드했다고 가정)


1

이것은 나를 위해 일했다 :
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

그런 다음 다음을 입력하십시오. ssh-add ~/.ssh/id_rsa


나는 질문이 ~/.ssh권한 에 관한 것이라고 생각하지 않습니다 . 그럼에도 불구하고 전체 명령 (여기 chmod) 을 추가하고 이것이 수행하는 작업과 필요한 이유를 설명 하면 답변을 크게 향상시킬 수 있습니다 .
Robert

0

오랫동안 고군분투 한 후에 마침내 Windows 에서이 문제를 해결할 수있었습니다. 나에게 User env 변수 GIT_SSH는

"C : \ Program Files (x86) \ WinScp \ PuTTY \ plink.exe"

WinScp와 함께 설치되었습니다. git-scm "C : \ Program Files \ Git \ usr \ bin \ ssh.exe" 와 함께 제공되는 기본 ssh.exe 를 사용하도록 포인팅을 변경했습니다 .


0

BitBucket 단계 :

새로운 키를 생성하지 않으려면 SKIP ssh-keygen

ssh-keygen -t rsa 

공개 키를 클립 보드에 복사하십시오.

clip < ~/.ssh/id_rsa.pub

비트 버킷에 로그인 : 프로파일보기-> 설정-> SSH 키로 이동 (보안 탭에서) 키 추가를 클릭하고 상자에 키를 붙여넣고 설명 제목을 추가하십시오.

Git Bash로 돌아가십시오.

ssh-add -l

당신은해야합니다 :

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

지금 : git pull작동해야합니다


0

백업에서 하드 드라이브를 복원 한 후이 문제가 발생했습니다.

내 문제 : 내 원격을 확인하고 볼 수 있지만 (git remote -v 사용) git push origin master를 실행하면 권한이 거부되었습니다 (공개 키). 치명적 : 원격 저장소에서 읽을 수 없습니다.

이미 SSH 폴더와 SSH 키가 있었고 터미널을 통해 추가했습니다.ssh-add /path/to/my-ssh-folder/id_rsa )을 성공적으로 ID를 추가했지만 여전히 푸시 할 수 없었고 여전히 같은 오류가 발생했습니다. 새 키를 생성하는 것은 나에게 나쁜 생각이었습니다. AWS에 대한 다른 매우 안전한 권한과 관련되어 있기 때문입니다.

키와 내 Github 프로필 간의 연결이 끊어졌습니다.

솔루션 : 프로파일> 설정> SSH 및 GPG 키에서 키를 Github에 다시 추가하면 문제가 해결되었습니다.

또한 : 내 계정에는 2 단계 인증이 설정되어 있습니다. 이 경우 터미널에서 자격 증명을 요청하는 경우 Github 비밀번호가 아닌 사용자 이름을 사용하십시오. 2 단계 인증의 경우 인증 코드를 사용해야합니다 (이는 내 전화에서 Authy에 의해 생성되었으며 비밀번호를 터미널에 복사하여 암호로 설정해야 함).

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