Git이 원격 GitHub 저장소에 잘못된 사용자로 푸시


82

업무용 GitHub 계정과 개인 계정이 있습니다. 먼저 테스트 프로젝트에 개인용 계정을 사용한 다음 다른 계정으로 동일한 컴퓨터에서 저장소를 만들었습니다.

이제 개인 계정에 새 저장소를 다시 만들고 싶었고 global 및 local을 변경 user.name하고 GitHub 설정 페이지에 입력 된 새 ssh 키 쌍을 수행했습니다. 그런 다음 디렉토리를 설정했습니다.

git init
git remote add origin <url>
git push origin

하지만 이제 나에게 말해

오류 : personaluser / newrepo.git에 대한 권한이 거부되었습니다.

다른 계정이이 계정에 어떻게 연결되어 있는지 모르겠습니다. 관련 항목이 .git/config없습니다 workusername.

Windows 10을 사용하는 경우 시간을내어 Rajan의 답변을 읽으십시오.


1
Windows 10의 경우 아래에 답변하십시오. 자격 증명 관리자에서 자격 증명을 제거합니다. 2 시간을 낭비했습니다.
xenteros

@xenteros 답변으로 게시 해주세요. 나는 1 시간을 잃었고 당신은 나를 1 시간 더 구했습니다.
lexicore

답변:


76

이것은 나의 현재 작업 설정과 매우 유사하게 들립니다. 이미 별도 ssh-keys~/.ssh/config파일 을 설정 한 것 같으므로 파일 을 만들고 다음과 유사한 정보로 채워야합니다.

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

모든 속성은 매우 자명하지만 IdentitiesOnly하나입니다. 나는 그것이 무엇을위한 것인지 설명하려고하지 않을 것이지만 그것은 나의 현재 설정에 있고 잘 작동합니다.

Host URL은 올바른 사용자 설정을 가져 오기위한 포인터 일 뿐이며 파일을 대상 HostNameURL로 올바르게 가져 오는 데 아무런 영향을 미치지 않는다는 점도 주목할 가치가 있습니다 .

이제 귀하의 origin(또는 remote일반적으로) URL이 Host사용자 이름에 따라 각 저장소 의 올바른 URL 과 일치 하는지 확인하기 만하면 됩니다. 기존 개인 저장소가 이미있는 경우 .git/config텍스트 편집기에서 해당 저장소의 파일을 편집 할 수 있습니다 .

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

또는 명령 줄을 통해 수행하십시오.

git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

당신의 일과 마찬가지로 :

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

또는 다시 명령 줄을 통해 :

git remote set-url origin git@work.github.com:your_work_organization/project.git

물론 파일 의 HostURL 중 하나를~/.ssh/config

Host github.com

work.github.com구성 관계를 더 쉽게 볼 수만 있었습니다.

모든 설정이 완료되면 각 리모컨으로 푸시 할 수 있습니다.

편집하다

내가 방금 알아 낸 한 가지 주목할 점은 값에 대해 전역 git 구성 값을 설정 한 경우 user.email(그리고 user.name다른 값도 보낼 것이라고 생각 합니다) git은 해당 이메일 사용자로 커밋을 표시한다는 것입니다. 이 문제를 해결하기 위해 로컬 저장소 내에서 전역 git 구성 설정을 재정의 할 수 있습니다.

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com

이제 해당 저장소에 대한 올바른 사용자로 커밋을 보내야합니다.


3
매력처럼 작동합니다. 감사합니다!
NorthBridge 2013

1
이 사이트 는 관심있는 모든 사람들을 위해 ssh 구성 파일을 더 자세히 설명합니다 .

3
확실히 가장 유용한 답변입니다. 무리 감사.
limp_chimp 2014

훌륭한! 정말 고마워!
Fydo 2014 년

1
내가 놓친 열쇠는 .git / config에 ssh 호스트를 지정하는 것이 었습니다. 감사합니다!
xdotcommer

45

제어판> 사용자 계정> 자격 증명 관리자> 일반 자격 증명으로 이동합니다.

git 자격 증명을 제거하십시오. 그런 다음 git push를 실행하십시오. 그러면 git 자격 증명을 묻는 메시지가 표시됩니다. 올바른 자격 증명을 입력하십시오.


3
이것은 Windows10에서 Git Bash를 실행하는 동안 내 문제를 해결했습니다. 라잔 - 파틸 @ 덕분에
suspicious_williams

영어로 된 Windows GUI가없는 경우 control /name Microsoft.CredentialManager명령 줄 에 입력하여 자격 증명 관리자에 연결할 수 있습니다.
bgusach

이상한,하지만 내가 시작 했어에만 좋은 작품 힘내 배쉬을 (위에서 언급 한 바와 같이)하지만 난 시작 동일한 터미널 I 계속 사용하는 경우 git push오류를 - 그것도 터미널 다시 시작한 후, 동일한 오류가 모든 시간을 던지고 유지합니다. 그러나 어쨌든, 감사합니다 - 그것은 마지막에 나에게 많은 시간을 저장
Kostyantyn Didenko을

이것은 확실히 내가 만난 최고의 대답입니다. 나머지는 복잡했지만 이것은 간단하고 정확했습니다.
claudekennilol

이것은 한 번 작동합니다. 계정을 다시 추가 한 후에도 동일한 문제가 계속 발생합니다.
Megakoresh

37

ssh 대신 https로 전환 할 수도 있습니다. https를 사용하는 경우 .git / config 설정을 따릅니다. 따라서 .git / config에서 다음을 변경하십시오.

url = git@github.com:USER/PROJECT.git

...에

url = https://USER@github.com/USER/PROJECT.git

(이 값은 git 프로젝트 페이지에 있으며 SSHHTTP버튼을 클릭하여 새 값을 생성합니다.)


2
+1! 이것은 당신이 개인 키 등을 설치하지 않을 경우 대여자 기계 등 일회성 푸시을 수행하기위한 정말 좋은 솔루션입니다
lambshaanxy

1
내가 사용하는 유일한 문제 https는 당신이 할 때마다 사용자 / 패스를 입력해야한다는 것입니다 push, 내가 모르는 일부 git 구성이 없다면
hellatan

나는 이것이 아주 오래되었다는 것을 알고 있지만, 감사합니다. 내 컴퓨터는 ssh 용으로 설정되어 있지 않지만 일회성 푸시를 위해 개인 대신 내 작업 github 계정으로 푸시하려고했습니다. 내 프로젝트 디렉토리의 .git / config에서 이것을 사용하고 훌륭하게 작동했습니다. 예이! 당신을 위해 찬성합니다.
Sady 2014-09-11

2
당신이 할 수있는 인식 git push https://username:pass@github.com/user/repo.git과 ... 당신도 경우에있는 거 확인을 pass쉘의 역사
플라톤

이것이 최상의 솔루션입니다. 감사합니다!
codemicky

33

github는 git의 설정이 아닌 ssh 키로 사용자를 식별합니다.

따라서 개인 계정으로 푸시를 시도 할 때 업무용 계정의 ssh 키가 키링에 없는지 확인해야하며 그 반대의 경우도 마찬가지입니다. 사용 ssh-add -l당신의 열쇠 고리에있는 키를 결정하고, ssh-add -d keyfile당신의 열쇠 고리에서 키를 제거 할 수 있습니다.

또한 ~/.ssh/config특정 ssh 키를 github에 제공하도록 구성했는지 확인해야 할 수도 있습니다 . 마지막으로, github가 동일한 ssh 공개 키를 가진 두 개의 계정을 어떻게 처리하는지 모르겠습니다. 그러니 그렇게하지 마십시오.


3
필요한 경우 GIT_SSH환경 변수를 사용하여 git에게 ssh에 대해 다른 명령을 사용하도록 지시 할 수도 있습니다. 특히 특정 키를 사용하도록 할 수 있습니다. 참고 항목 주요 자식 man 페이지 , 또는 아마도 이 질문을 .
Cascabel

내 시스템 (OSX 10.5)에서 명령이 키링에서 키를 삭제하는 것은이었다ssh-add -d keyfile
Motin

@Motin에게 감사드립니다. 그것이 실제로 제가 말하고자하는 바입니다. 편집.
Walter Mundt

12

최근에 같은 문제가 발생하여 새 github 계정을 만들었습니다. 위의 답변을 시도했지만 도움이되지 않았습니다. 그런 다음 Keychain Access 에서 github를 삭제하는 방법에 대한 게시물을 보았습니다 ( mac을 사용하는 경우에만 해당 ). 내가 git push하면 사용자 이름과 비밀번호를 요청하고 작동했습니다!


@Carpetsmoker OP가 Mac 전용 솔루션을 제공하는 것 같습니다.
Zev Spitz

1
원본 게시물을 찾아 링크로 추가하십시오.
Zev Spitz


11

나는 같은 문제가 있었다. 동일한 SSH 키를 사용하는 GitHub에 두 개의 계정이 있었고 GitHub는 내가 원하는 저장소에 대한 권한이없는 잘못된 계정을 사용하도록 기본 설정되었습니다. 예상대로 작동하지 않는 계정에서 SSH 키를 제거했습니다.

GitHub가 자신을 인증하는 계정을 다음과 같이 테스트 할 수 있습니다.

ssh -T git@github.com

나에게 이것은 원래 잘못된 사용자 이름을 보여 주었지만 해당 계정에서 중복 SSH 키를 제거한 후 올바른 사용자 이름을 표시하고 내 저장소로 가져 오기 및 푸시가 잘 작동했습니다.


8

나는 이것이 조금 늦을 수도 있다는 것을 알고 있지만 꽤 오랫동안 이것을 고수했고 마침내 다음과 같이 고쳤습니다.

예시 스크린 샷

  • 키 체인 액세스 (osX)로 이동

  • git 검색 (모든 항목을 선택했는지 확인하십시오)

  • 여기에서 범인 자격 증명을 찾을 수 있습니다. 그들을 삭제하십시오.

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


이것은 나를 도운 유일한 대답이었습니다!
와일더 페레이라

이 답변은 Mac에서 문제를 해결하는 데 도움이되었습니다.
자바 스크립트 Hupp 기술

6

이것이이를 수행하는 방법입니다. 다른 ssh 계정에 대해 다른 ssh 구성을 사용할 수 있습니다.

2 월 22 일 업데이트 :

이 링크를 확인하십시오 : https://gist.github.com/2351996


링크 된 Gist와 Gist 페이지의 첫 번째 댓글은 완벽하게 작동했습니다. 나는 이것이 Walter Mundt의 대답보다 우월하다고 생각합니다. 키링에 여러 개의 키를 둘 수 있고 모든 것이 '그냥 작동합니다'.
keybits 2012-08-28

3

계정과 연결된 SSH 키 변경이 작동하지 않으면 계정과 연결된 이메일을 변경하십시오.

Github> 계정 설정> 이메일로 이동하여 커밋에 사용하는 이메일 주소가 계정의 이메일과 일치하는지 확인합니다.

커밋에 사용중인 이메일 주소를 확인하려면 다음 명령을 실행합니다 git config --global user.email.. 커밋하는 데 사용하는 이메일 주소를 변경해야하는 경우 git config --global user.email "your_email@youremail.com".


2

나는 같은 문제가 있습니다. 내 경우에는 다음과 같은 일이 발생합니다.

이전에 다음과 같이 원격 저장소와 대화 할 때마다 내 자격 증명을 묻지 않도록 git을 만들었습니다. git config --global credential.helper wincred

"wincred"git config --global credential.helper none을 "none"으로 대체하여 동일한 명령을 실행하여 문제를 해결했습니다.

그런 다음 git이 내 사용자 이름 / 패스를 다시 요청하면 모든 것이 잘됩니다.


1

이 문제도 있었지만 다른 해결책은 나에게 효과가 없었습니다. 작업을 .netrc위해 github 인증 항목이 있는 파일을 만들었습니다 . 이 git명령은 항상 .netrc이전 사용자 이름과 암호가있는를 사용했습니다. .netrc새 사용자 이름과 암호를 사용하려면 파일 의 항목을 편집해야했습니다 .


1

처음 실행 killall ssh-agent한 다음 사용해야하는 계정에 대해 생성 된 ssh 키를 추가 하는 임시 솔루션을 찾았습니다. ssh-add ~/.ssh/id_4shameer

이것은 유형 오류가 발생했을 때 여러 github 계정에서 작업 할 수있는 한 가지 방법입니다 ERROR: Permission to user/repo-git.git denied to username.


1

직장에서 최근에 맥북을 Active Directory에 연결하고 내 컴퓨터에 몇 가지 관리자 계정을 추가 할 때까지 git에 문제가 없었습니다. 그러나 그 후 git은 화면을 잠그고 돌아올 때까지 잘 작동합니다. 그러면 다음과 유사한 모호한 오류가 발생합니다.

No user exists for uid 1927040837
fatal: Could not read from remote repository.

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

내 사용자를 위해이 특정 컴퓨터에 하나의 ssh 키만 있으며 내 용어로 zsh를 사용하고 있습니다. 사용자 이메일과 이름이 정확하므로 문제가되지 않았습니다. Ergo, 컴퓨터를 잠글 때마다 다시 시작하는 것은 쓸모가 없습니다. 나를위한 해결책은 내.zshrc 파일 하고 ssh-key를 내보내는 줄의 주석 처리를 제거하는 것이 었습니다 (이전에 수행 할 필요가 없었고 수년 동안 zsh를 사용했습니다).

줄은 다음과 같아야합니다.

# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

이 작업을 수행하면 reset터미널에서 실행하면 모든 것이 잘 작동합니다.

다른 사람에게 도움이되기를 바랍니다.


0

추가하고 싶습니다-다른 사용자의 계정으로 작업하는 경우 저장소 설정 아래의 공동 작업자 영역에 자신을 추가해야합니다.


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