Git의 유명한 "오류 : .git에 대한 권한이 사용자에게 거부되었습니다."


118

나는 인터넷 검색을 시도하고 https://help.github.com/en/articles/connecting-to-github-with-ssh 및 다양하고 다양한 가이드를 읽었습니다 . 나는 할 수 git push -u origin master없거나git push origin master (동일한 명령).

나는 적어도 2 년 동안 내 자식 계정을 가지고 있었다. push -u origin master랩톱에서 리포지토리를 성공적으로 만들 수 있었지만이 데스크톱에서는 문제가 있습니다.

내가 시도한 것은 다음과 같습니다.

1. 내 자식 사용자 이름을 설정했습니다.

2. git 사용자 이메일을 설정했습니다.

삼. 내 /home/meder/.ssh/id_rsa.pub의 콘텐츠를 github의 계정 페이지에 업로드했습니다. 공백을 붙여 넣지 않았 음을 확인했습니다.

4. 다음 내용으로 ~ / .ssh / config를 만들었습니다.

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

.ssh를 700, id_rsa 600으로 chmodded

5. 오타없이 적절한 원격 출처 추가했습니다 .git remote add origin git@github.com:medero/cho.git

6. # 5를 확인하기 위해 여기 내 .git / config가 있습니다. 디렉토리가 정확 하고 다른 디렉토리가 아닙니다.

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:medero/cho.git

7. ssh git@github.com -v 성공적인 인증을 제공합니다.

8. 한 가지 이상한 점은 나를 맞이하는 사용자 이름이 t추가되어 있다는 것입니다. 내 GitHub의 사용자 이름입니다 medero하지 medert.

안녕하세요 메 데롯! 성공적으로 인증되었지만 GitHub는 셸 액세스를 제공하지 않습니다.

9. 내가 하지 프록시 또는 방화벽 뒤에

10. 키가 제공됩니다 -v.

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11. 내가 사용한 명령은 다음과 같습니다 .

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin git@github.com:medero/cho.git
git push -u origin master

12. 새 SSH 키를 만들고 싶지 않습니다.

13. ssh를 사용하여 git clone하고 편집, 커밋 및 git push를 수행하면 똑같은 결과를 얻습니다.

14. 실제 오류는 다음과 같습니다.

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. github 사용자 이름과 github 토큰을 설정했습니다.

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token 시스템의 모든 git 인스턴스에 대해 GitHub 토큰을 설정합니다.

16. 내 github 사용자 이름이 NOT mederot이고 내 계정 페이지 당 내 github 토큰이 올바른지 확인했습니다 (처음 2 자 및 마지막 2 자 확인).

17. # 16을 확인하려면 ~ / .gitconfig에

[github]
    token = mytoken...
    user = medero

18. 그게 ssh-key add ~/.ssh/id_rsa필요하다면 ...



이론 :

나는 인증 된 SSH를 얻을 때, 사용자 인사말이기 때문에 뭔가 비린내가 용의자 mederot가 아니라 medero내 ACCT이다. 내 github 계정의 내용이 잘못 캐시 될 수 있습니까?

나는 또한 일부 로컬 ssh 캐싱 이상한 점을 의심합니다. 왜냐하면 i mv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOO, 그리고 수행 ssh git@github.com -v하는 경우 여전히 나를 인증하고 이름을 바꿀 때 내 /home/meder/.ssh/id_rsa를 제공한다고 말합니다?! 캐시해야하나요?!


"Windows 용 Github"를 사용하고 있으며 두 Github 계정간에 전환 할 때 비슷한 문제가 발생했습니다. 내 솔루션은 다음과 같습니다. stackoverflow.com/questions/18565876/…
Alisa

2 개의 다른 로컬 리포지토리에서 해당 오리진 원격 리포지토리로 푸시하려는 경우 다음을 확인하십시오. stackoverflow.com/q/63291726/12033855
an4s911

답변:


35

18 단계에서 다음을 의미한다고 가정합니다 ssh-add ~/.ssh/id_rsa. 그렇다면 다음과 같이 설명합니다.

나는 또한 내가 mv ~ / .ssh / id_rsa KAKA 및 mv ~ / .ssh / id_rsa.pub POOPOO를 수행하고 ssh git@github.com -v를 수행하면 여전히 나를 인증하고 그것이 제공한다고 말하기 때문에 일부 로컬 ssh 캐싱 이상한 점이 의심됩니다. 이름을 바꿀 때 내 /home/meder/.ssh/id_rsa ?! 캐시해야하나요?!

... ssh-agent키를 캐싱 하고 있기 때문 입니다.

GitHub를 보면 mederot 계정이 있습니다. 이것이 당신과 아무 관련이 없다고 확신합니까? GitHub는 git@github.com:...URL을 사용할 때 SSH 키를 기반으로 사용자를 식별하므로 동일한 SSH 공개 키를 두 계정에 추가하는 것을 허용해서는 안됩니다 . (허용되지 않아야 함은 여기에서 확인 됩니다 .)

따라서 다음 중 하나가 해당 될 가능성이있는 것으로 의심됩니다.

  1. 이전에 mederot 계정을 만들고 SSH 키를 추가했습니다.
  2. 다른 사람이 귀하의 공개 키 사본을 확보하여 mederot GitHub 계정에 추가했습니다.
  3. GitHub에 끔찍한 버그가 있습니다.

1이 아닌 경우 GitHub에보고하여 약 2 ~ 3 개를 확인할 수 있습니다.

더 :

ssh-add -l ID가 둘 이상 있는지 확인합니다. 그렇다면 ssh-add -d "해당 키 파일"로 제거합니다.


큰 도움 마크! 이것은 나에게도 해결되었습니다.
Leachy Peachy 2011

그게 다야. 당신은 저에게 큰 두통을 구했습니다. 이제 ssh-add ...github / ssh 로그인을 전환 할 때마다 실행하는 것을 기억해야 합니다.
Cerin

어떤 이유로 ssh-add -d <keyfile>작동하지 않습니다. (수동으로 파일을 삭제했습니다.) 언급 한 캐싱은 어떻게 든 수동으로 다시로드해야합니다. 어떻게?
not2qubit

ssh-add -d-> "인증 에이전트에 대한 연결을 열 수 없습니다."
알렉스

ssh-add나를 위해 그것을 한 비트이었다. 감사!
rayryeng

160

며칠 동안 인터넷 검색을 한 후 이것이 내 상황과 유사한 유일한 질문이라는 것을 알았습니다.

그러나 방금 문제를 해결했습니다! 그래서 나는이 문제를 검색하는 다른 사람들을 돕기 위해 여기에 내 대답을 넣었습니다.

내가 한 일은 다음과 같습니다.

  1. "Keychain Access.app"을 엽니 다 (Spotlight 또는 LaunchPad에서 찾을 수 있음).

  2. 카테고리에서 "모든 항목" 을 선택하십시오.

  3. "git" 검색

  4. 모든 오래되고 이상한 항목 삭제

  5. 다시 푸시를 시도하면 작동합니다.


17
친구 위로 엄지. 당신은 영웅입니다.
Prince Bansal 2015

1
지옥 예, 마침내 수많은 SSH 키로 어려움을 겪은 후 이것이 효과가 있었던 대답입니다! Mac 및 https 액세스가 키 체인을 사용하는 것 같습니다. 미친.
Patrick Chu

1
당신이 주 동안이 문제를 해결하려고 노력 필자 BLESS
존 헨 더샷

1
매우 유용 해 보이지만 old & strange. 내가 물건을 엉망으로 만들려고 ..?
지구 이론

1
@geotheory old & strange사물은 이전 날짜 항목과 잘못된 이메일 또는 사용자 이름을 의미합니다. 으로 표를 정렬 할 수 있습니다 Date Modified.
Alice Chan

91

Windows에서 문제가 발생하면 Windows 기록에서 자격 증명을 제거하십시오.

  • 자격 증명 관리자로 이동
  • Windows 자격 증명으로 이동
  • 일반 자격 증명 아래의 항목을 삭제합니다.
  • 다시 연결을 시도하십시오. 이번에는 올바른 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

git에서 자격 증명 제거


2
완전한. 더 이상 사용하지 않는 계정으로 403 액세스를 받고있었습니다. 이제 해결되었습니다.
Anton Epikhin 2017 년

1
단지 github.com 자격 증명을 삭제하면 나를 위해 충분했다
바트 드 에크

그리고 거기에서 사용자 이름과 모든 것을 변경할 수 있습니다. 그것이 방법입니다.
WesternGun

실제로 이것은 저에게도 효과가 있었지만 두 개의 다른 계정이 있으면 어떻게해야합니까?
an4s911

22

Mac에서 여러 GitHub 로그인이 있고 SSH를 사용 하지 않는 경우 다음을 사용하여 올바른 로그인을 강제 실행합니다.

git remote set-url origin https://username@github.com/username/repo-name.git

개인 저장소로 푸시하는 데 문제가있는 경우에도 작동합니다.


1
고마워, 이것은 나를 위해 일했다. 암호를 입력하라는 메시지가 표시되고 암호를 입력 한 후 푸시 할 수있었습니다. 매우 감사!
픽셀

...하지만 이것은 Windows에서 나에게 문제를 해결하지 못했습니다. Mac에서만
pixel

...하지만 위의 @Fahid 제안은 Windows에서 자격 증명을 정리하는 데 도움이되었습니다
pixel

당신은 영웅입니다.
Vaibhav

이것은 우리가 다른 계정에 속한 여러 github 프로젝트의 경우 정답입니다
Gangadhar JANNU

14

갈등 때문입니다.

ssh-agent에서 모든 키 지우기

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

github ssh 키 추가

ssh-add   ~/.ssh/github

이제 작동합니다.


3
또한 ssh-add -D모든 ID를 제거하므로 에이전트가 잘못된 상태가되는 경우 유용 할 수 있습니다.
Sam

6

Mac을 사용하고 있으며 키 체인 액세스 앱에서 github 레코드를 삭제하여 문제가 해결되었습니다. 내가 한 일은 다음과 같습니다.

  1. "Keychain Access.app"을 엽니 다 (Spotlight 또는 LaunchPad에서 찾을 수 있음).
  2. 카테고리에서 "모든 항목"을 선택하십시오.
  3. "git"검색
  4. 모든 오래되고 이상한 항목을 삭제하십시오. 다시 밀어 넣으십시오.

위의 단계는 쉽게 @spyar에서 복사됩니다.


6

솔루션은 @spyar가 제공하는 키 체인 액세스 와 동일합니다. 이전 사용자 이름이 저장된 앱인 합니다.

이 상황에 대한 두 가지 해결책이 있습니다.

  1. 에서 정보를 삭제 키 체인 접근을 하여
    • 키 체인 접근 앱 열기
    • github 검색
    • 해당 자격 증명 삭제

또는

  1. 사용하려는 경우 ssh 키 를 사용하십시오 . https에서 Repo URL을 변경하기 만하면됩니다.

https://github.com/username/repo.git

으로

git@github.com : username / repo.git

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


2

최근에 https를 사용하여 푸시 된 내 컴퓨터의 이전 저장소에서이 문제가 발생했습니다. 5 단계와 6 단계는 https URL을 사용하여 ssh URL로 내 저장소의 원격 URL을 재설정하여 내 문제를 해결했습니다.

원격 확인은 https URL을 사용하고 있습니다.

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

그런 다음 ssh URL을 사용하도록 원본을 재설정하십시오.

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

새 리모컨 확인

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

이제 성공적으로 git push -u origin

리모컨이 https 일 때 푸시가 실패 할 수있는 설정을 변경했을 수도 있지만 이것이 내 문제에 대한 해결책이었습니다.


오류 : unrealcv / synthetic-computer-vision.git에 대한 권한이 monajalal에 거부되었습니다. 치명적 : 원격 저장소에서 읽을 수 없습니다. 올바른 액세스 권한이 있고 저장소가 있는지 확인하십시오.
Mona Jalal

1

당신과 같은 문제가있었습니다. 인터넷 검색에 오랜 시간을 보낸 후 계정에 동일한 키를 추가 한 여러 사용자로 인해 내 오류가 발생한 것을 알았습니다.

그래서, 여기 내 해결책이 있습니다 : 잘못된 사용자의 ssh-key를 삭제하십시오 (잘못된 사용자도 내 계정이기 때문에 할 수 있습니다). 잘못된 사용자가 귀하의 계정이 아닌 경우 ssh-key를 변경해야 할 수도 있지만 이것이 발생하지 않을 것이라고 생각합니다.

그리고 귀하의 문제는 귀하의 계정 이름에 잘못된 오류가 발생했기 때문일 수 있습니다.


0

이 문제는 다음으로 인해 발생하기도합니다.

당신이 맥 / 리눅스를 사용하고 있고 ~ / .ssh / config에서 'ControlMaster'를 사용한다면 ssh 제어 마스터 프로세스가 실행 중일 수 있습니다.

이를 찾으려면 다음을 실행하십시오.

ps aux | grep '\[mux\]'

그리고 관련된 것들을 죽이십시오.


0

나도 이것에 부딪 혔는데, 그 원인은 내가 변경 사항을 푸시하고 있던 저장소를 복제하는 동안 로그인하지 않고 시크릿 탭에서 복제 URL을 선택했기 때문입니다. 어떤 이유로 git은 다른 사용자 계정을 선택했습니다. 적절한 로그인 페이지에서 다시 시도했을 때 평소처럼 작동했습니다.


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