source

Git: Git을 사용할 때 권한 거부(공개 키) 오류를 해결하는 방법은 무엇입니까?

factcode 2023. 5. 14. 11:10
반응형

Git: Git을 사용할 때 권한 거부(공개 키) 오류를 해결하는 방법은 무엇입니까?

나는 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 공용/개인 키 쌍을 생성하지 않은 경우

이 정보는 Chaw에서 작동하지만 SSH pubkey 인증을 지원하는 다른 모든 Git 저장소에 적용할 수 있습니다.(예: [gitolite][1], gitlab 또는 github 참조).

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

  • 먼저 .ssh 디렉토리에 cd를 입력합니다.터미널을 열고 다음을 실행합니다.

cd ~/.ssh && ssh-keygen

  • 다음으로 클립보드에 복사해야 합니다.
  • X 실행 시: OS X 행시:cat id_rsa.pub | pbcopy
  • 실행하는 : Linux:cat id_rsa.pub | xclip
  • Bash 경유)에서 Windows를합니다.cat id_rsa.pub | clip
  • Windows에서 다음을합니다.Get-Content id_rsa.pub | Set-Clipboard~ @Thx ~ @orion elenzil)
  • 웹 사이트를 통해 키를 계정에 추가합니다.
  • 마지막으로 .gitconfig를 설정합니다.
  • git config --global user.name "bob"
  • git config --global user.email bob@... 로드되었는지 시작하는 것을 마십시오

이것이 바로 복제 및 체크아웃에 도움이 될 것입니다.

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

-

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

  • github 또는 gitlab 계정 설정에서 인증된 키 확인
  • 로컬 컴퓨터에서 연결해야 하는 해당 개인 키 결정

eval $(ssh-agent -s)

  • 키 위치 정의

ssh-add ~/.ssh/id_rsa

다음과 같은 방법으로 보다 광범위한 문제 해결과 자동 수정을 수행할 수 있습니다.

ssh -vT git@github.com

또는 아래 의견에 따라 다음을 발행할 수 있습니다.

ssh -vT git@gitlab.com

또는 조직에서 실행 중인 Git 인스턴스로 gitlab/github를 대체할 수 있습니다.

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

이 오류는 Git Read-Only URL 대신 SSH URL(Read/Write)에 액세스하지만 해당 repo에 대한 쓰기 액세스 권한이 없을 때 발생할 수 있습니다.

서버에 배포하는 등 자신만의 레포를 복제하려는 경우도 있습니다.이 경우 실제로는 읽기 전용 액세스만 필요합니다.그러나 이는 사용자 자신의 보고서이므로 기본 설정인 경우 GitHub에 SSH URL이 표시될 수 있습니다.이 경우 원격 호스트의 공용 키가 GitHub SSH 키에 없으면 액세스가 거부되고 액세스가 거부됩니다.

SSH URL을 사용하여 쓰기 액세스 권한이 없는 다른 사용자의 보고서를 복제하려고 할 때도 마찬가지입니다.

한마디로, 레포만 복제하려는 경우 HTTPS URL(https://github.com/{user_name}/{project_name}.git URLSSH 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 에이전트에 추가합니다.

ssh-add ~/.ssh/id_rsa

동일한 오류 보고서를 받았습니다.

SSH 프로토콜 대신 HTTPS를 사용하여 수정되었습니다.테스트 PC에 "SSH 키"를 설정하고 싶지 않기 때문입니다.

복제 시 URL을 HTTPS로 변경:

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

제 문제는 조금 다릅니다.원격에 기존 로컬 레포를 추가할 때 다음을 사용하여 URL을 SSH로 설정합니다.

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

이 문제를 해결하려면 URL을 HTTPS로 재설정합니다.

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

참고로, 다음 명령을 사용하여 URL을 확인할 수 있습니다.

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

이것이 나 같은 사람에게 도움이 되기를 바랍니다. :D

Windows에서 다음과 같은 답변에 포함되지 않고 문제 해결에 대한 git 또는 git 허브 문서에 포함되지 않는 또 다른 가능성:

git는 당신이 생각하는 것과 다른 opensh 실행 파일을 사용하고 있을 수 있습니다.

나는 그것을 받고 있었습니다.Permission denied (public key) 및 ssh.dev..com 에서 할 때 지침을 github ssh.dev.azure.com 을 사용하여 에서) ssh -vT git@github.com그리고.ssh -vT git@ssh.dev.azure.com그리고 여전히 다음과 같은 오류가 발생했습니다.

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

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

결국 저는 문제가 Git for Windows와 Windows 모두 자체 버전의 opensh를 가지고 있다는 것을 알게 되었습니다.다음 문서에 나와 있습니다. https://github.com/desktop/desktop/issues/5641

Windows ssh-agent 서비스를 사용하여 ssh 키 암호를 저장하고 있었기 때문에 git(opensh의 별도 버전)에서 개인 키를 읽을 수 없었습니다.저는 이 오류 메시지가 사용되는 것이 버그라고 생각합니다. 오해의 소지가 있습니다.

수정 사항:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

또는 ~/.gitconfig:

[core]
    sshCommand = 'C:\\Windows\\System32\\OpenSSH\\ssh.exe'

아마도 이것은 곧 Windows용으로 고쳐질 것이지만, 이 문제로 시간을 낭비한 것은 이번이 두 번째입니다.

저는 제가 했던 것과 같은 문제로 어려움을 겪었고 레포를 복제할 수 있었습니다.저는 Mac용으로 이 절차를 따릅니다.

첫 번째 단계:공용 SSH 키를 이미 가지고 있는지 확인하는 중입니다.

  1. 터미널을 엽니다.
  2. 를 입력하십시오.ls -al ~/.ssh기존 SSH 키가 있는지 확인합니다.

디렉터리 목록을 확인하여 공용 SSH 키가 이미 있는지 확인합니다.기본 public은 다음 d_dsa.pub, id_ecdsa.pub, id_ed25519.pub, id_rsa.pub 중 하나입니다.

찾을 수 없으면 2단계로 이동하거나 3단계를 수행합니다.

2단계: 공용 SSH 키 생성

  1. 터미널을 엽니다.
  2. github에 한 전자 합니다.ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. 터널에표다니에서 을 볼 수 있습니다.Generating public/private rsa key pair메시지가 표시되면"Enter a file in which to save the key,"Enter 키를 누릅니다.기본 파일 위치를 사용할 수 있습니다.메시지가 표시되면Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]Enter 키를 다시 누르면 됩니다.
  4. 롬트에서프. "Type a secure passphrase. Enter passphrase (empty for no passphrase): [Type a passphrase]" 키를 누르지 키를 .Enter same passphrase again: [Type passphrase again] 키를 다시 . Enter 키를 누릅니다.

생니다가 됩니다.id_rsa.pub

3단계: SSH 에이전트에 SSH 키 추가

  1. 단형종eval "$(ssh-agent -s)"

  2. SSH 키를 SSH 에이전트에 추가합니다.새 SSH 키를 생성하는 대신 기존 SSH 키를 사용하는 경우 명령에서 id_rsa를 기존 개인 키 파일의 이름으로 바꿔야 합니다. 명령을 합니다.$ ssh-add -K ~/.ssh/id_rsa

  3. 이제 SSH 키를 복사하여 github 계정에 추가합니다.

  4. 이름 "SSH"를 하여 이 합니다.pbcopy < ~/.ssh/id_rsa.pub파일을 클립보드에 복사합니다. 이제 허브 계정을 엽니다. 설정 > SSHGPG 키 > 새 SSH 키 제목을 입력하고 클립보드에서 키를 붙여 저장합니다.Voila 당신은 끝났습니다.

이것은 나에게 도움이 됩니다.

ssh-add ~/.ssh/id_rsa

시각적 가이드(Windows)

1/2. Git 배치 측면

1.1. git 배치 열기(그녀를 다운로드)

1.2. 아래 텍스트를 붙여넣기(GitHub 계정 이메일로 변경)

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

여기에 이미지 설명 입력

1.3. (기본 파일 위치 사용)을 누릅니다.

1.4. 두 번 클릭(또는 SSH 키 암호 설정 - Gitbub 암호 설정 문서)

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

1.5. 키 생성:

ID가 /c/Users/user/.ssh/id_rsa...에 저장되었습니다.

1.6. 클립보드의 SSH 키.

$ clip < ~/.ssh/id_rsa.pub

2/2. Github 웹사이트 사용자 측

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

SSH and GPG keys=> 새 SSH 키:

Paste 계단식 코드1.6 여기에 이미지 설명 입력

완료했습니다 :)

여기에 이미지 설명 입력


SSH를 않는 SSH를 사용합니다.use HTTPS:

여기에 이미지 설명 입력

Github 문서: https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh

문제가 최근(2021년 후반) 갑자기 나타난다면 호환되지 않는 해시 알고리즘이 원인일 수 있습니다.

이 게시물(2021년 10월)을 기준으로 Windows용 Git의 최신 버전은 2.33.1(릴리스 노트)이며, 이는 최신 OpenSSH 8.8p1(릴리스 노트)을 채택하고 SHA-1을 사용하지 않습니다.한편, 원격 Git 저장소가 여전히 SHA-1을 고수하면 인증에 실패합니다.

이 경우에 해당할 수 있었는지 확인하려면 다음을 통해 소프트웨어 버전을 확인하십시오.

ssh -V
git --version

그런 다음 OpenSSH 8.8/8.8p 릴리스 노트의 "잠재적으로 호환되지 않는 변경 사항" 섹션을 확인해야 합니다.

TL;DR

솔루션 1: SHA-1을 추가하여 SHA-1을 다시 활성화합니다.~/.ssh/config파일 이름:

Host <remote>
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

교체해야 한다는 것을 기억하십시오.<remote>원격 리포지토리의 호스트 이름을 사용합니다.

솔루션 2: RSA 대신 ECDSA 또는 Ed25519를 사용하여 키 쌍을 재생성합니다.예:

ssh-keygen -t ecdsa -C <comment>

교체해야 한다는 것을 기억하십시오.<comment>당신만의 기억력 있는 문구로.그런 다음 생성된 공용 키를 원격 저장소에 업로드합니다.


저는.com 에 때이 프롬프트 그는 Gitee.com 의 Gitee.com 를 사용합니다.golang.org/x/crypto/ssh서버에 이 문제에 대한 페이지를 게시했습니다(중국어).

git@gitee.com: Permission denied (publickey).

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

인증 에이전트에 나열된 키(ssh-add-l)를 확인합니다.
(표시되지 않으면 기존 키 중 하나를 ssh-add /path/to/your/key(예: ssh-add ~/.ssh/id_key)로 추가합니다.)
(키가 없는 경우 먼저 키를 만듭니다.참조: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html 또는 Google ssh-keygen)

Github 계정과 연결된 키가 있는지 확인하는 방법

다음 사이트로 이동:

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

그렇지 않은 경우 하나를 추가한 다음 다시 시도합니다.

아무 문제가 없다면 이것을 시도해 보세요.

  1. 토큰 생성 (개인 액토생성큰스세(생성▁(▁generate▁personal)Setting -> Developer settings -> Personal access tokens -> Generate new token)
  2. git remote set-url origin https://<TOEKN>@github.com/USERNAME/REPOSITORY.git

참고: 비밀번호 팝업이 나타나면 토큰 입력만 시도합니다(두 번 시도).

SSH와 HTTPS의 차이점이 무엇인지 알고 있었기 때문에 같은 문제를 만났습니다.

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

ssh://github.com/USERNAME/REPOSITORY.git

그래서 나는 단지 변경하는 만으로 HTTPS에서 SSH로 변경했습니다.https://ssh://URL 끝에 있는 아무것도 변경되지 않았습니다.

하지만 진실은:

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

git@github.com:USERNAME/REPOSITORY.git

그 말은 내가 변했다는 뜻입니다.ssh://github.com/USERNAME/REPOSITORY.gitgit@github.com:USERNAME/REPOSITORY.git그건 효과가 있다.

어리석은 실수지만 희망은 누군가를 도와줍니다!

다음은 Windows 10에서 수행한 단계입니다.

  1. Git Bash를 엽니다.

  2. 공개 키 생성:

    ssh-keygen -t rsa -b 4096 -C "youremailaddress@xyz.com"
    
  3. 생성된 키를 클립보드에 복사(CTRL+C처럼 작동)

    clip < ~/.ssh/id_rsa.pub
    
  4. 브라우저에서 Github => Profile => Settings => SSH 및 GPG 키 => 키 추가

  5. 키 이름을 입력하고 클립보드(CTRL+V)를 붙여넣습니다.

  6. 마지막으로 연결을 테스트합니다(Gitbash).

    ssh -T git@github.com
    

여기에 이미지 설명 입력

감사합니다!

조금 다른 상황이 있었습니다. 원격 서버에 로그온하여 서버에서 git를 사용하고 있었는데 git 명령을 실행했을 때 동일한 메시지가 표시되었습니다.

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

제가 수정한 방법은 Mac에서 /etc/ssh_config 파일을 변경하는 것이었습니다.

ForwardAgent no 

로.

ForwardAgent yes

저는 제 SSH 키를 루트 폴더에 복사해야 했습니다.Ubuntu 18.04를 실행하는 Google Cloud Compute Engine

sudo cp ~/.ssh/* /root/.ssh/

솔션사용을 이용한 gh예: Github의 공식 CLI

gh 설치

brew install gh

gh 로그인 또는 CLI를 통한 인증

gh auth login

레포클론

gh repo clone <username or orgname>/<repo-name>

예:gh repo clone keshavdulal/sample-repo

랜트: 나도 머리를 후려갈기고 있을 때git clone갑자기 더 이상 일을 하지 않기로 결정했고, 이미 액세스할 수 있는 망할 레포를 복제하기 위해 SSH/공개 키/암호화를 처음부터 다시 배울 인내심이나 지능이 없습니다.또한 아무도 언급하지 않은 것에 놀랐습니다.gh 답이 없는 곳에서.

얘들아, 이게 내게 도움이 된 방법이야,

  1. 단말기를 열고 사용자에게 이동 [첨부 이미지 참조]
  2. .ssh 폴더를 열고 id_rsa 또는 id_rsa.pub과 같은 파일이 없는지 확인합니다. 그렇지 않으면 파일을 제대로 다시 쓰지 못할 수 있습니다.
  3. git --version [git 설치 및 버전 확인]
  4. git config --global user.email "당신의 이메일 ID"
  5. git config --global user.name "your name"
  6. git config --list [이름과 이메일을 설정했는지 확인하십시오]
  7. cd ~/.vmdk
  8. ssh-keygen은 파일 저장을 묻는 메시지를 표시합니다. 허용합니다.
  9. cat ~/.ssh/id_rsa.pub [공개 키에 액세스하여 키를 gerit 설정에 복사]

참고: Git와 함께 sudo 명령을 사용하면 안 됩니다.만약 당신이 sudo를 사용해야 하는 아주 좋은 이유가 있다면, 모든 명령어와 함께 sudo를 사용하고 있는지 확인하세요. (아마도 그 시점에서 셸을 루트로 얻기 위해 su를 사용하는 것이 더 나을 것입니다.)sudo 없이 SSH 키를 생성한 다음 sudogit push와 같은 명령을 사용하려고 하면 생성한 것과 동일한 키를 사용하지 않게 됩니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

일부 구식 블로그가 아니라 항상 Github에서 SSH 키 생성 절차를 확인합니다.

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

키는 다음과 같이 생성됩니다.

ssh-keygen -t ed25519 -C "your_email@example.com"

그래서 알고리즘은 rsa나 다른 어떤 것이 아니라 ed25519입니다.

당신은 회사 환경에 있습니까?당신의 시스템 변수가 최근에 변경되었을 가능성이 있습니까?이 SO 답변에 따르면 SSH 키는 다음 위치에 있습니다.%HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub그래서 만약에%HOMEDRIVE%최근에 변경된 Git은 키를 어디서 찾아야 하는지 알지 못하므로 모든 인증 정보를 확인할 수 있습니다.

달기보를 실행해 .ssh -vT git@github.com다음 위치를 기록합니다.identity file위치합니다.나에게 그것은 내 정상이 아닌 것을 가리키고 있었습니다.\Users\MyLogin네트워크 수준에서 추진되는 환경 변수의 변화로 인해 네트워크 드라이브로 전환할 수 있습니다.

해결책?나의 새로운 때부터%HOMEDRIVE%로컬 파일과 동일한 사용 권한을 가지고 있습니다. 방금 .ssh 폴더를 그곳으로 이동하고 하루를 마쳤습니다.

현재 작업 디렉터리 권한 700을 부여해야 했기 때문에 이 오류가 발생했습니다.

chmod -R 700 /home/ec2-user/

Windows(윈도우)에서는 모든 앱이 홈에 동의하는지 확인하십시오. Msys는 놀랍게도 그렇게 해주지 않을 것입니다.ssh와 git가 내 .ssh 디렉토리가 어디에 있는지 일치하지 않는 것 같아 환경 변수를 설정해야 했습니다.

가장 쉬운 방법 중 하나

종착역까지

  git push <Git Remote path> --all

기본 GIT 지침은 SSH 키 항목을 참조하지 않았습니다.위의 일부 링크를 따라 다양한 운영 체제에서 이 작업을 수행하는 방법을 단계별로 설명하는 Git 도움말 페이지를 찾았습니다(링크가 OS를 감지하고 그에 따라 리디렉션됨).

http://help.github.com/set-up-git-redirect/

GITHub에 필요한 모든 사항을 살펴보고 "RSA 키를 생성할 때 암호를 추가하는 이유"와 같은 자세한 설명도 제공합니다.다른 사람에게 도움이 될 경우를 대비해서 글을 올리려고 했어요.

다른 사용자 이름을 사용하여 리포지토리에 푸시하려고 할 때 가장 쉬운 해결 방법은 다음과 같습니다.

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

저는 다음을 도왔습니다.

  1. 터미널 열기(Git Bash)
  2. 디렉토리에 합니다..ssh또는 이름을 변경하고 새로 만들기.ssh폴더를 누릅니다.
  3. 지침의 단계를 따릅니다.
    1. 새 SSH 키 생성
    2. SSH 에이전트에 SSH 키 추가

시스템: Windows 10.

아주 직선적입니다.아래 명령을 입력합니다.

ssh-keygen -t rsa -b 4096 -C "youremailid@yourdomain.com"

SSH 키를 생성합니다.파일을 열고 내용을 복사합니다.GitHub 설정 페이지로 이동하여 SSH 키를 클릭한 후 새 SSH 키 추가를 클릭하여 내용을 여기에 붙여넣습니다.이상입니다 :) 이슈를 다시 보면 안 됩니다.

yarn.files.node_modules/ package-lock.json의 yarn.lock 파일을 했습니다.뛰었다npm i다시 한 번. 이것으로 저는 그 문제를 해결되었습니다.

Rufinus의 응답 외에도 Windows에서 ssh 키를 클립보드에 복사하는 바로 가기는 다음과 같습니다.

  • type id_rsa.pub | clip

참조:

키가 두 개 이상인 경우 수행해야 할 수 있습니다.ssh-add private-keyfile

언급URL : https://stackoverflow.com/questions/2643502/git-how-to-solve-permission-denied-publickey-error-when-using-git

반응형