ssh-key를 사용하여 비밀번호없이 GitHub로 푸시


215

비밀번호없이 SSH 키 페어를 생성하고 공개 키를 GitHub에 추가했습니다.

연결

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

성공했고 키 이름을 바꾸면 실패합니다.

그러나 변경 사항을 적용하려고 할 때 여전히 사용자 이름과 비밀번호 조합을 묻습니다.

비밀번호없이 푸시 할 수있는 방법이 있습니까?


9
https://github...리모컨을 사용 하고 있지 않은지 확인하십시오 . 또한 git@github...형식을 따라야 합니다.
cjc343

답변:


421

사용자 이름 과 비밀번호 를 요청하는 경우 오리진 원격은 SSH URL이 아닌 HTTPS URL을 가리 킵니다.

ssh로 변경하십시오.

예를 들어 Git과 같은 GitHub 프로젝트에는 HTTPS URL이 있습니다.

https://github.com/<Username>/<Project>.git

그리고 SSH 하나 :

git@github.com:<Username>/<Project>.git

넌 할 수있어:

git remote set-url origin git@github.com:<Username>/<Project>.git

URL을 변경합니다.


4
이것으로 문제가 해결되었지만 Github이 왜 새 저장소의 원격 끝을 기본적으로 http URL로 가리 키도록 권고하는지 계속 묻습니다. 방금 저장소를 처음부터 만들었고 git URL이 아닌 https 원격 URL을 설정하는 옵션이 제공되었습니다.
Preslav Rachev

2
다음은 https URL을 적절한 자식 URL로 자동 변경하는 빠른 한 줄짜리 쉘 명령입니다 (github URL에서만 작동합니다!) :git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba

11

또한 요점의 경우 사용자 이름을 생략해야합니다

git remote set-url origin git@gist.github.com:<Project code>

10

실제로 SSH URL을 사용하고 있지만 git push 할 때 여전히 사용자 이름과 비밀번호를 묻는 경우 :

git remote set-url origin git@github.com:<Username>/<Project>.git

다음을 사용하여 문제 해결을 시도해야합니다.

ssh -vT git@github.com

다음은 샘플 출력입니다.

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

실제로 GitHub에 공개 키를 이미 추가했으며 로컬에도 개인 키가 있습니다. 그러나 내 개인 키의 이름은이라고 /c/Users/Yuci/.ssh/github_rsa합니다.

샘플 출력에 따르면 Git은 시도하고 /c/Users/Yuci/.ssh/id_rsa있습니다. 따라서, 단순히 복사 할 수 있습니다 github_rsaid_rsa같은 디렉토리에.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

이제 ssh -vT git@github.com다시 달리면 다음과 같은 결과가 나타납니다.

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

그리고 이제 사용자 이름과 비밀번호를 요구하지 않고 GitHub에 푸시 할 수 있습니다 :-)


5

HTTPS가 아닌 SSH 버전 을 사용해야합니다 . 당신이 저장소에서 복제 할 때와 링크를 복사 SSH의 SSH 사용하기 쉬운 및 액세스로 해결할 수있는 모든 문제 때문에, 버전. 계정에 입력 한 모든 SSH (예 : 푸시, 풀, 복제 등)에 대한 액세스 권한을 설정할 수 있습니다.

여기에 SSH가 필요한 이유와 사용법을 알려주는 링크가 있습니다.

힘내 SSH 키 생성


0

평소처럼 SSH 키를 만들고 공개 키를 GitHub에 붙여 넣습니다. ssh-agent에 개인 키를 추가하십시오. (이것이 당신이 한 일이라고 생각합니다.)

모든 것이 올바른지 확인하려면 ssh -T git@github.com

다음과 같이 원격 지점을 수정하는 것을 잊지 마십시오.

git remote set-url origin git@github.com:username/your-repository.git

-4

명령 행 사용 :

ls -al ~/.ssh기존 SSH 키가 있는지 확인하려면 입력 하십시오.

터미널에 다음이 표시됩니다. 디렉토리가 없습니다

그런 다음 새 SSH 키를 생성하십시오.

1 단계.

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

2 단계.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

3 단계.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

죄송합니다,이 질문은 키를 만드는 방법이 아니라 인증 대신 키를 사용하도록 git을 설정하는 것입니다
Sebus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.