Git의 유명한 "ERROR: .git에 대한 권한이 사용자에게 거부됨"
저는 구글링을 시도해 보았고 https://help.github.com/en/articles/connecting-to-github-with-ssh 과 다양하고 다양한 가이드를 읽었습니다.할 수 없습니다.git push -u origin master
아니면git push origin master
(동일한 명령어).
저는 적어도 2년 정도는 git 계정을 가지고 있었습니다.저는 성공적으로 레포를 만들 수 있었고,push -u origin master
노트북에서는 괜찮지만 이 데스크톱에서는 문제가 있습니다.
제가 시도한 것은 다음과 같습니다.
1.git 사용자 이름을 설정했습니다.
2.git 사용자 이메일을 설정했습니다.
3.github의 계정 페이지에 저의 /home/meder/.ssh/id_rsa.pub의 내용을 업로드 하였습니다.공백을 붙여넣지 않았음을 확인했습니다.
4.다음 내용으로 ~/.ssh/config를 만들었습니다.
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
.ssh를 700, id_rsa 600으로 chmoded했습니다.
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
, 그게 제 행동입니다.내 github 계정에 있는 무언가가 잘못 캐시될 수 있습니까?
지역 SSH 캐싱의 이상함도 의심됩니다. 왜냐하면 만약 제가mv ~/.ssh/id_rsa KAKA
그리고.mv ~/.ssh/id_rsa.pub POOPOO
, 그리고 할ssh git@github.com -v
때 가 제공된다고 ?!, 을 하고 /home/meder/.ssh/id_rsa 가 된다고 를 된다고 가 하고 캐시에 넣어야 한다고요?
며칠 동안 구글에서 검색한 결과, 이것이 제 상황과 비슷한 유일한 질문이라는 것을 알게 되었습니다.
하지만, 저는 그 문제를 막 풀었답니다!그래서 저는 이 문제를 찾는 다른 사람들을 돕기 위해 여기에 제 답변을 올립니다.
제가 한 일은 이렇습니다.
"Keychain Access.app" 열기 (Spotlight 또는 LaunchPad에서 확인 가능)
카테고리에서 "모든 항목"을 선택
"git" 검색
오래되고 이상한 모든 항목 삭제
다시 밀어봐도 효과가 있었습니다.
창에 문제가 발생하면 Windows 기록에서 자격 증명을 제거합니다.
- 자격 증명 관리자로 이동
- Windows 자격 증명으로 이동
- Generic Credentials(일반 자격 증명) 아래의 항목 삭제
- 다시 연결해 보십시오.이번에는 올바른 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.
Mac에서 여러 GitHub 로그인이 있고 SSH를 사용하지 않는 경우 다음을 사용하여 올바른 로그인을 강제로 수행합니다.
git remote set-url origin https://username@github.com/username/repo-name.git
이는 개인 저장소로 푸시하는 데 문제가 있는 경우에도 적용됩니다.
이 18 에서, 이 은 은 이 에서 ssh-add ~/.ssh/id_rsa
할 수 있습니다 그렇다면 이는 다음과 같습니다.
또한 mv ~/.ssh/id_pub KAKA와 mv ~/.ssh/id_pub PUPOOO를 실행하고 ssh git@github.com -v를 실행해도 여전히 인증되고 이름을 바꿀 때 /home/meder/.ssh/id_pub를 제공한다고 표시되기 때문에 로컬 ssh 캐싱 이상이 의심됩니다.!캐시에 넣어야 한다고요?
...부터 그 이후로ssh-agent
키를 캐싱하고 있습니다.
깃허브에 보시면 메데롯 계정이 있습니다.당신과는 상관없는 일이라고 확신하십니까?GitHub는 두 계정에 동일한 SSH 공개 키를 추가하는 것을 허용해서는 안 됩니다.git@github.com:...
SSH 키를 기반으로 사용자를 식별하고 있는 URL입니다. (이것은 허용되지 않아야 함을 여기에서 확인합니다.)
그래서 저는 (가능성이 감소하는 순서대로) 다음 중 하나가 그런 경우라고 생각합니다.
- 이전에 mederot 계정을 생성하고 SSH 키를 추가했습니다.
- 다른 사람이 당신의 공개키 사본을 입수하여 mederot GitHub 계정에 추가하였습니다.
- GitHub에 끔찍한 버그가 있습니다.
만약 1이 아니라면 2~3개 정도 확인할 수 있도록 깃허브에 보고하겠습니다.
추가:
ssh-add -l 둘 이상의 ID가 있는지 확인(yes)하고 ssh-add -d "that key file"로 제거합니다.
그것은 갈등 때문입니다.
ssh-agent에서 모든 키 지우기
ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github
github ssh 키 추가
ssh-add ~/.ssh/github
이제 될 겁니다.
맥을 사용하고 있는데 키체인 액세스 앱에서 github 레코드를 삭제하면 문제가 해결됩니다.제가 한 일은 이렇습니다.
- "Keychain Access.app" 열기 (Spotlight 또는 LaunchPad에서 확인 가능)
- 카테고리에서 "모든 항목"을 선택
- "git" 검색
- 오래된 이상한 아이템들을 모두 삭제하기 다시 한번 푸쉬를 시도해보면 그냥 효과가 있었습니다.
위의 단계는 쉽게 @spyar에서 복사됩니다.
이전 사용자 이름이 저장된 Keychain Access 앱인 @spyar provide와 솔루션이 동일하다고 생각합니다.
이 상황에 대한 해결책은 두 가지입니다.
- Keychain Access의 정보를 삭제합니다.
- 키체인 액세스 앱 열기
- GitHub 검색
- 해당 자격 증명 삭제
아니면
ssh key를 사용하고 싶다면.보고서를 https에서 변경하면 됩니다.
안으로
git@github.com :http/repo.git
최근 https를 사용하여 푸시되던 내 기계의 오래된 repo에서 이 문제가 발생했습니다.5단계와 6단계는 https url을 ssh url로 사용하여 repo의 원격 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일 때 푸시가 실패할 수도 있는 설정을 변경했을지는 여전히 잘 모르겠지만 이것이 내 문제에 대한 해결책이었습니다.
저는 맥 OS에서 비슷한 문제를 겪고 있었습니다.
요약
- 보고서가 올바른/의도된 사용자 이름으로 복제되었는지 확인합니다.
- GitHub 사용자 이름을 지정하지 않고 repo를 복제하려고 하면 OSX의 Keychain Access 유틸리티에 이미 캐시된 GitHub 사용자 이름이 선택됩니다.
- - 를 을 해야 하는 해야 을 를 하는
git clone https://username@github.com/username/repository.git
- 2021년 8월 13일 GitHub에서 비밀번호 인증 지원이 삭제되었기 때문에 비밀번호 입력 안내 메시지가 뜨면 개인 접근 토큰(PAT)을 사용해야 할 수 있습니다.다음은 PAT(Personal Access Token)에 관한 몇 가지 문서와 설정 및 사용 방법입니다.
- 하려면 사용자 이름 해야 을 해야
git push https://username@github.com/username/repository.git
PAT를 비밀번호로 제공합니다. - 이후 푸시할 때 OSX Keychain Access 유틸리티에 캐시되면 암호가 표시되지 않습니다.또한 전체 URL을 사용하여 푸시할 필요가 없었습니다.저.
git push <origin/remote/upstream> <branch>
잘 작동했습니다
내 설정/상황/문제에 대한 자세한 정보
기본적으로 저는 두 개의 다른 GitHub(github.com ) 계정으로 작업하려고 했습니다(1).직장계정/이메일 & 2.개인계정/이메일)
저는 좀 특이한 경우였는데, 조직에서 퍼블릭 github.com 로 Repos를 마이그레이션하기 전에 전제로 했을 때 개인 이메일로 생성된 기존 SSH 키를 가지고 있었고, Bastion AWS(Amazon Web Services)에도 이 키가 구성되어 있었기 때문입니다.동일한 이메일로 새 키를 재생성할 수 없었고 Bastion AWS용으로 구성된 키를 업데이트해야 하는 업무 이메일로 새 키를 생성하지 못했습니다.
참고: 초기 설정 자체가 올바르지 않았습니다. 그 당시 SSH 키를 사용하거나 사용하는 방법에 대한 지식이 부족했기 때문에 잘못 설정한 것을 깨달았습니다.
다음과 같은 방법이 효과적이었습니다(이 방법은 해결책임에 유의하십시오).저는 다시 깃허브 개인 접근 토큰(PAT)을 사용하게 되었습니다.
git clone https://username@github.com/username/repository.git
암호를 묻는 메시지가 나타나면 여기에 내 PAT를 입력합니다(이후 OSX Keychain Access에 캐시됨).
그리고 나서.
git push https://username@github.com/username/repository.git
이후 푸시할 때 암호 프롬프트가 표시되지 않아 푸시할 때 전체 URL을 사용할 필요가 없었습니다.저.git push <origin/remote/upstream> <branch>
잘 작동했습니다
저도 당신과 같은 문제가 있었습니다.오랜 시간 구글링을 한 후에, 저는 제 오류가 그들의 계정에 같은 키를 추가한 여러 사용자들에 의해 발생했다는 것을 알게 되었습니다.
그래서 여기 제 해결책이 있습니다: 잘못된 사용자의 ssh-key를 삭제하는 것입니다. (잘못된 사용자도 제 계정이기 때문에 할 수 있습니다.)잘못된 사용자가 계정이 아니라면 ssh-key를 변경해야 할 수도 있지만 이런 일은 없을 것 같습니다.
그리고 당신의 문제는 당신의 계정 이름을 잘못 입력해서 생긴 것 같습니다.
Travis CI를 사용하여 콘텐츠를 배포할 때 이 오류가 발생했습니다. 이 오류는 편집 내용을 저장소로 푸시하는 것과 관련이 있습니다.
저는 결국 Travis 계정과 연관된 GitHub 개인 접속 토큰을 업데이트하여 문제를 해결하였습니다.public_repo
스코프 액세스 권한:
저장소로 푸시할 때에도 동일한 문제가 발생했습니다.
$ git push --set-upstream origin new-operator-test
ERROR: Permission to redhat-openshift-ecosystem/redhat-marketplace-operators.git denied to cniackz.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
수행된 작업은 포크된 저장소를 복제하는 것입니다.
git clone git@github.com:cniackz/redhat-marketplace-operators.git
git checkout -b new-branch
<performed the changes>
git add <files>
git commit -m <files>
그리고 효과가 있었습니다.
$ git push --set-upstream origin new-branch
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 10 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (7/7), 643 bytes | 643.00 KiB/s, done.
Total 7 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote:
remote: Create a pull request for 'new-branch' on GitHub by visiting:
remote: https://github.com/cniackz/redhat-marketplace-operators/pull/new/new-branch
remote:
To github.com:cniackz/redhat-marketplace-operators.git
* [new branch] new-branch -> new-branch
Branch 'new-branch' set up to track remote branch 'new-branch' from 'origin'.
되며, 는 forked repository, redhat repository, redhat repository, redhat repository, redhat repository, redhat repository, redhat repository, redhat repository, redhat repository, recniackz
사용자는 해당 리포지토리에 액세스할 수 없고 포크만 사용할 수 있습니다.
이 문제의 원인은 다음과 같습니다.
mac/linux를 사용하고 있고 ~/.ssh/config에서 'ControlMaster'를 사용하는 경우 일부 ssh 컨트롤 마스터 프로세스가 실행 중일 수 있습니다.
찾으려면 다음을 실행합니다.
ps aux | grep '\[mux\]'
그리고 관련된 사람들을 죽입니다.
저도 이런 일을 당했는데, 제가 변경 사항을 적용하는 레포를 복제하는 과정에서 로그인하지 않고 익명 탭에서 클론 URL을 선택했기 때문입니다(아직도 효과에 대해 잘 모르겠습니다).어떤 이유에서인지 git이 다른 사용자 계정을 선택하게 되었습니다.서명이 제대로 된 페이지에서 다시 시도했을 때는 평소처럼 작동했습니다.
저도 제 MAC 작업을 하다가 이런 문제를 발견하게 돼서 문제는 이거예요.예전 GitHub 계정에서 로그인한 적이 있습니다.지금은 다른 GitHub 계정을 사용하고 있습니다.아래 단계를 이용해서 풀었습니다.
- "Keychain Access.app" 열기
- 카테고리에서 "모든 항목"을 선택
- "Gitub" 검색
- 그 항목을 여세요.
- 계정을 새 github 사용자 이름으로 변경합니다.
다시 밀어보면 됩니다.
도움이 되는 단계:
- github의 기존 PAT를 모두 삭제하고 새 PAT를 생성했습니다.
- 새 PAT를 작성할 때 repo 섹션을 반드시 확인해야 합니다.다음은 github의 이미지를 예로 들어보겠습니다.
위의 1단계를 정확하게 따랐기 때문에 저에게는 이 단계가 오류의 근원이 되었습니다. - 로컬 컴퓨터 창 또는 Mac에서 github 암호 업데이트
제 생각은 그뿐입니다.
조직에서 개인 저장소를 복제하려고 할 때 이 문제가 발생했습니다.제 경우에는 GitHub에서 SSH 키를 삭제하고 새로운 키를 추가하는 것이 해결책이었습니다.
제 경우에는 제가 기여하고 싶은 저장소에 추가되지 않았고, 다른 모든 것이 설정되어 있었습니다.그래서 기관장님께 저를 추가해 달라고 부탁했더니 효과가 있었습니다.
언급URL : https://stackoverflow.com/questions/5335197/gits-famous-error-permission-to-git-denied-to-user
'programing' 카테고리의 다른 글
테이블에 새 행과 데이터를 추가하는 함수 또는 하위 (0) | 2023.09.17 |
---|---|
Spring Social로 휴식 인증을 하는 방법은? (0) | 2023.09.17 |
Excel을 사용하여 행렬을 단일 열로 변환하는 방법 (0) | 2023.09.17 |
READ_의 차이점은 무엇입니까?Oracle 데이터베이스의 커밋되고 직렬화 가능한 격리 수준? (0) | 2023.09.17 |
이름이 있는 DataTable 열 인덱스 가져오기 (0) | 2023.09.17 |