나는 이것을 매우 늦게 대답하고 있고 심지어 내가 정말로 대답하고 싶은지 StackOverflow조차 확인했다. 아무도 실제로 실제 문제를 설명하지 않았기 때문에 대답하고 있습니다.
기초
먼저 여기에 리모컨이 무엇인지 이해하십시오. Remote는 GitLab이고 시스템은 로컬이므로 원격에 대해 이야기 할 때 출력에 origin
설정된 URL이 git remote -v
원격 URL입니다.
프로토콜
기본적으로 Git clone / push / pull은 주로 두 가지 다른 프로토콜에서 작동합니다 (다른 프로토콜도 있습니다).
- HTTP 프로토콜
- SSH 프로토콜
저장소를 복제 (또는 원격 URL 변경)하고 https://gitlab.com/wizpanda/backend-app.git 과 같은 HTTPs URL 을 사용하면 첫 번째 프로토콜, 즉 HTTP 프로토콜을 사용합니다.
repo를 복제 (또는 원격 URL 변경)하고 다음과 같은 URL을 사용하는 동안 git@gitlab.com:wizpanda/backend-app.git
을 사용하는 동안 SSH 프로토콜을 사용합니다.
HTTP 프로토콜
이 프로토콜에서 모든 원격 작업, 즉 복제, 푸시 및 풀은 간단한 인증, 즉 원격 (이 경우 GitLab)의 사용자 이름 및 암호를 사용하므로 모든 작업에 대해 사용자 이름과 암호를 입력해야하므로 번거로울 수 있습니다. .
따라서 푸시 / 풀 / 복제시 GitLab / GitHub에서 사용자 이름 및 비밀번호로 인증하고 작업을 수행 할 수 있습니다.
이를 시도하려면 명령을 실행하여 HTTP URL로 전환 할 수 있습니다 git remote set-url origin <http-git-url>
.
이 경우를 피하기 위해 SSH 프로토콜을 사용할 수 있습니다.
SSH 프로토콜
간단한 SSH 연결은 공개-개인 키 쌍에서 작동합니다. 따라서 귀하의 경우 SSH URL을 사용하여 통신하기 때문에 GitLab에서 인증 할 수 없습니다. 이제 GitLab은 어떤 식 으로든 당신을 알아야합니다. 이를 위해 공개-개인 키 쌍을 생성하고 공개 키를 GitLab에 제공해야합니다.
이제 GitLab으로 푸시 / 풀 / 복제 할 때 GIT (SSH 내부)는 기본적으로 GitLab에 개인 키를 제공하고 신원을 확인한 다음 GitLab에서 작업을 수행 할 수 있도록 허용합니다.
그래서 저는 무함마드가 이미 제시 한 단계를 반복하지 않고 이론적으로 반복 할 것입니다.
- 키 쌍`ssh-keygen -t rsa -b 2048 -C "My Common SSH Key"를 생성합니다.
- 생성 된 키 쌍은 기본적으로
~/.ssh
명명 된 id_rsa.pub
(공개 키) 및 id_rsa
(개인 키)에 있습니다.
- 공개 키를 GitLab 계정에 저장합니다 (동일한 키를 여러 서버 / 계정에서 사용할 수 있음).
- 복제 / 푸시 / 풀 때 GIT는 개인 키를 제공합니다.
- GitLab은 개인 키를 공개 키와 일치시켜 수행 할 수 있습니다.
팁
항상 2048 바이트 이상의 강력한 rsa 키를 만들어야합니다. 따라서 명령은 ssh-keygen -t rsa -b 2048
.
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
일반적인 생각
두 접근 방식 모두 장단점이 있습니다. 위의 텍스트를 입력 한 후에는 이것에 대해 읽지 않았기 때문에 이에 대해 더 많이 검색했습니다.
이 공식 문서 https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols 를 찾았습니다 . 여기서 내 요점은 오류를 읽고 오류에 대해 생각함으로써 자신의 이론이나 이해를 한 다음 일부 Google 결과와 일치시켜 문제를 해결할 수 있다는 것입니다. :)
ssh -vvvv git@gitlab.com
SSH 키를