힘내 푸시에는 사용자 이름과 비밀번호가 필요합니다


1435

Git 리포지토리를 GitHub 계정에서 PC로 복제했습니다.

내 PC와 랩톱 모두에서 하나의 GitHub 계정으로 작업하고 싶습니다.

내 PC를 사용하여 GitHub를 밀거나 당기려고 할 때 사용자 이름과 비밀번호가 필요하지만 랩톱을 사용할 때는 아닙니다.

와 상호 작용할 때마다 사용자 이름과 비밀번호를 입력하고 싶지 않습니다  origin. 내가 여기서 무엇을 놓치고 있습니까?


1
예, 어떻게해야합니까? 나는 다른 무엇을 keygen을 생성?
TooCooL

1
Github 계정 ( github.com/account/ssh )에 pubkey를 등록 하고 올바른 사용자 이름을 사용하도록 SSH 클라이언트를 구성해야합니다.
jwodder

1
나는 그 모든 것을했지만 여전히 사용자 이름과 암호가 필요합니다! 두 대의 PC에서 하나의 계정을 사용할 수 있습니까?
TooCooL

1
이 질문은 이것에 대한 모든 옵션을 다룹니다 : stackoverflow.com/questions/5343068/…
ford

2
더 이상 ssh로 전환 할 필요가 없습니다. HTTPS에서도 가능합니다. 내 대답을 확인하십시오.
Varun Achar

답변:


1960

일반적인 원인은 SSH 대신 기본 (HTTPS)을 사용하여 복제하는 것입니다. 리포지토리로 이동하여 "복제 또는 다운로드"를 클릭 한 다음 URL 필드 위의 "SSH 사용"버튼을 클릭하고 다음과 같이 오리진 원격 URL을 업데이트하면이 문제를 해결할 수 있습니다.

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

이것은 GitHub : 원격 URL을 HTTPS에서 SSH로 전환에 설명되어 있습니다 .


61
그리고 URL을 변경하는 방법을 그림으로, 여기 : stackoverflow.com/a/2432799/60488 (스포일러 : git remote set-url origin git://new.url.here)
요한 쿨

136
당신이 (나 같은) 보안 제한에 대한 사용자 ssh를 당신이 할 수없는 경우 : git remote set-url origin https://name:password@github.com/repo.git (여기에 코멘트에서 추출)
브루노 Berisso

134
HTTPS를 사용한 복제가 일반적인 실수 인 이유는 무엇입니까? GitHub는 이제 HTTPS 사용을 권장합니다.
Dennis

8
기본적으로 @smftre이지만, 도우미를 사용하여 자격 증명을 캐시 할 수 있습니다 .
Dennis

28
help.github.com/articles/generating-ssh-keysPermission denied (publickey) 안내서를 사용하여 수정 했습니다 .
voltrevo

386

Git 리포지토리를 통한 영구적 인증

신임 캐싱 을 사용하려면 다음 명령을 실행하십시오 .

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

캐싱 expire를 지정해야합니다 .

git config --global credential.helper 'cache --timeout 7200'

자격 증명 캐싱을 활성화하면 7200 초 (2 시간) 동안 캐시됩니다 .


당신은 또한 당신의 원격 URL을 변경해야 할 수 git remote set-url origin https://git@github.com/<owner>/<repo>.git 도 2FA와 함께 작동이
브롱 데이비스에게

14
이것이 정답입니다. 정확히 질문에 대답합니다.
Abraham TS

보안상의 이유로 우분투 파일에서 7200 이후까지 자동으로 삭제됩니까?
우 사마

12 시간 동안 43,200 하루에 한 번 로그인합니다. 일부에게는 더 합리적 일 수 있습니다.
Urasquirrel

방금 이것을 시도-있어 :fatal: protocol 'https' is not supported
조엘

134

방금 동일한 문제가 발생했으며 가장 간단한 해결책은 HTTPS URL 대신 SSH URL을 사용하는 것입니다.

ssh://git@github.com/username/repo.git

그리고 이것은 아닙니다.

https://github.com/username/repo.git

당신은 지금과 유효성을 검사 할 수 있습니다 단지 SSH를 대신의 키 usernamepassword.


1
문제를 해결하는 가장 쉬운 방법은 원격 출처 URL을 수정하는 것입니다. 그게 다야. 끝난. 고맙습니다!
JOM

1
이것은 나를 위해 일했지만 처음에 이것을 해결해야했습니다 : stackoverflow.com/questions/2643502/…
Sridhar Sarnobat


120

비밀번호를 일반 텍스트로 입력하지 않아도 SSH로 변경하는 것 외에도 HTTPS를 계속 사용할 수 있습니다. 이것을 넣으면 ~/.netrc사용자 이름 / 비밀번호를 요구하지 않습니다 (적어도 Linux 및 Mac에서는).

machine github.com
       login <user>
       password <password>

추가 (VonC의 두 번째 주석 참조) : Windows에서 파일 이름은 %HOME%\_netrc입니다.

또한 암호화하려는 경우 VonC의 첫 번째 주석을 읽으십시오.

Git 1.7.10 이상이 있는 경우 사용할 수있는 또 다른 추가 (user137717의 의견 참조) .

자격 증명 도우미를 사용하여 Git에서 GitHub 비밀번호를 캐시하십시오 .

HTTPS를 사용하여 GitHub 리포지토리를 복제하는 경우 자격 증명 도우미를 사용하여 GitHub와 대화 할 때마다 GitHub 사용자 이름과 비밀번호를 기억하도록 Git에 지시 할 수 있습니다.

이것은 Linux, Mac 및 Windows에서도 작동합니다.


3
예, Linux에서는 작동하지만 Windows에서는 gitbash에서는 작동하지 않습니다.
Dielson Sales

3
@dolmen 나는 당신이 무슨 뜻인지 알지만 암호를 일반 텍스트로 넣으면 ... 암호화 할 수 있습니다.) stackoverflow.com/a/18362082/6309을 참조하십시오 . 이는 Github의 2 단계 인증 (2FA) 과도 호환됩니다. stackoverflow.com/a/18607931/6309
VonC

3
@Sales는 파일 %HOME%\_netrc대신을 호출하는 경우 Windows의 DOS 세션 또는 git bash에서 완벽하게 작동합니다 ~/.netrc. 해당 파일을 암호화하려면 stackoverflow.com/a/18362082/6309 를 참조하십시오 .
VonC

1
이것은 특히 VPN에서 git over VPN을 사용하여 Linux에서 잘 작동합니다.
Evan Hu

3
일반 텍스트로 작성하거나 암호화 할 필요가 없습니다. 도우미 유틸리티가이를 캐시하여 설정하는 데 30 초가 걸립니다. help.github.com/articles/caching-your-github-password-in-git/…
user137717

86

이전 답변으로 혼란스러워하는 미숙 한 사람에게는 다음을 수행 할 수 있습니다.

git remote -v

다음과 같은 것으로 응답합니다.

origin    https://yourname@github.com/yourname/yourrepo.git (fetch)
origin    https://yourname@github.com/yourname/yourrepo.git (push)

그런 다음 다른 많은 사람들이 제안한 명령을 실행할 수 있지만 이제는 위에서 yourname과 yourrepo를 알고 있으므로 yourname/yourrepo.git위의 내용을 잘라내어 붙여 넣을 수 있습니다 .

git remote set-url origin git@github.com:yourname/yourrepo.git

1
나는 이것을 시도했다. paraphrase매번 나에게 묻습니다 . 나는 하나를 설정하지 않았다
samayo

대신에 무엇이 yourrepo?
Raphi

2
@Raphi를 실행 git remote -v하고 무엇이 나오는지 확인하십시오
Davide

1
다른 답변에는이 조언이 선행되어야합니다.
Bennett Brown

57

당신은 SSH를 사용하여 개인 키가 암호로 암호화되면, 당신은 아직도 당신이 망할 놈으로 네트워크 작업을 수행 할 때 개인 키의 암호 / 암호를 입력하라는 메시지가 표시됩니다 처럼 push, pull그리고 fetch.

ssh-agent를 사용하여 개인 키 암호 / 암호 자격 증명을 저장하십시오.

당신이 당신의 암호 매번 입력 할 필요가 없도록하려는 경우, 당신은 사용할 수 있습니다 ssh-agent내가 설명해으로, 터미널 세션 당 한 번만 개인 키 암호 자격 증명을 저장하는 데 에 내 대답은 당신의 인증 에이전트에 대한 연결을 열 수 없습니다 :

$ eval `ssh-agent -s`
$ ssh-add

Windows msysgit Bash에서는의 출력을 평가해야 ssh-agent하지만 다른 개발 환경 및 운영 체제에서 동일한 작업을 수행해야하는지 잘 모르겠습니다.

ssh-add.ssh폴더 id_rsa에서 기본 이름 인 개인 키를 찾지 만 다른 이름의 키에 파일 경로를 전달할 수 있습니다.

요원 살해

터미널 세션을 마쳤 ssh-agent으면 kill 플래그를 사용하여 종료 할 수 있습니다 -k.

$ ssh-agent -k

ssh-agent매뉴얼에 설명 된대로 :

-k

SSH_AGENT_PID 환경 변수에서 제공 한 현재 에이전트를 종료하십시오.

선택적 타임 아웃

또한 다음과 같은 선택적 시간 초과 매개 변수가 필요할 수 있습니다.

$ ssh-add -t <timeout>

여기서 <timeout>형식입니다 <n>h위한 <n>시간 <n>m에 대한 <n>분, 등등.

ssh-agent매뉴얼 에 따르면 :

-t life

에이전트에 추가 된 ID의 최대 수명에 대한 기본값을 설정하십시오. 수명은 초 또는 sshd_config (5)에 지정된 시간 형식으로 지정할 수 있습니다 . ssh-add (1) 로 ID에 지정된 수명 이이 값을 재정의합니다. 이 옵션이 없으면 기본 최대 수명은 영원합니다.

더 많은 시간 형식에 대해서는이 페이지를 참조하십시오 .

Cygwin 사용자를위한 보안 경고

Cygwin 사용자는 Cygwin 에서 ssh-agent를 사용할발생할 수있는 보안 위험에 대해 알고 있어야합니다 .

로컬 netstat 및 원격 포트에서 / tmp / ssh-foo에 지정된 포트가 누구에게도 액세스 가능한 것으로 보이지는 않지만 사람들은 Cygwin 1 에서 ssh-agent의 잠재적 위험을 인식해야합니다 .

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

그리고 인용 된 링크에서 :

그러나, Cygwin에서의 유닉스 도메인 소켓은 참고 근본적으로 불안전 하고, 그래서를 난 강력하게 억제 의 Cygwin에서 SSH 에이전트의 사용을.

Cygwin에서 ssh-agent를 실행하면 /tmp/ssh-$USERNAME/디렉토리에 AF_UNIX 소켓이 생성 됩니다. Cygwin에서 AF_UNIX 소켓은 AF_INET 소켓을 통해 에뮬레이트됩니다. /tmp/ssh-$USERNAME/agent-socket-*메모장을 통해 파일을 살펴보면 쉽게 알 수 있습니다 . 당신은 같은 것을 볼 수 있습니다

!<socket >2080

다음 실행 netstat -a하고 놀라게! 포트 2080을 수신하는 프로그램이 있습니다. ssh-agent입니다. ssh가 서버로부터 RSA 챌린지를 수신하면 해당 서버 /tmp/ssh-$USERNAME/agent-socket-*(Cygwin에서는으로 연결됨)를 localhost:2080참조하고 ssh-agent에게 개인 키를 사용하여 RSA 챌린지를 처리하도록 요청한 다음 단순히 ssh-agent에서받은 응답을 서버로 전달합니다.

Unix에서는 프로그램이 AF_UNIX 소켓에 액세스하려고 할 때 Unix 커널이 권한을 확인하기 때문에 이러한 시나리오는 문제없이 작동합니다. 그러나 AF_INET 소켓의 경우 연결이 익명입니다 ( "안전하지 않은"읽기). Cygwin ssh-agent가 실행 중이라고 가정하십시오. 악의적 인 해커가 상자를 포트하고, ssh-agent에서 사용하는 열린 포트를 찾고, SSH 서버에 대한 연결을 열고, RSA 챌린지를 받고, 찾은 열린 포트를 통해 ssh-agent로 전송하고, RSA 응답, SSH 서버 및 Voila로 전송하고 서버에 성공적으로 로그인했습니다.


멋지고 상세하게 들립니다. 나는 https 자격 증명 도우미를 돌 보았고 ssh 연결을 돌 보았습니다! +1
VonC

49

출처 : Git 설정

다음 명령은 암호를 메모리에 얼마 동안 저장합니다 ( Git 1.7.10 이상).

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)

2
여러 암호를 기억할 필요없이 여러 자격 증명 을 캐싱하기위한 'netrc'자격 증명 도움말 ( stackoverflow.com/a/18362082/6309 )을 선호합니다 . 그러나 Windows를 사용 중이고 메모리 캐시를 사용하려면 winstore ( stackoverflow.com/a/15310274/6309 )
VonC

9
이것은 지금까지 IMHO의 가장 좋은 대답입니다.
Chiel ten Brinke

35

Git pull & push에 https 를 사용하는 경우 푸시 remote.origin.url할 때마다 입력 사용자 이름 (또는 비밀번호)을 피하기 위해 프로젝트를 구성 하십시오.

구성 방법 remote.origin.url:

URL 형식 :
    https : // {username : password @} github.com/ {owner} / {repo}

URL의 매개 변수 :

* username 
옵션, 필요할 때 사용할 사용자 이름.
입증, 지정된 경우 인증이 필요할 때 사용자 이름을 다시 입력 할 필요가 없습니다. 이메일을 사용하지 마십시오. "@"가없는 사용자 이름을 사용하십시오. 그렇지 않으면 URL을 올바르게 구문 분석 할 수 없습니다. * 비밀번호 선택적으로 인증이 필요할 때 사용할 비밀번호입니다. 지정된 경우 인증이 필요할 때 비밀번호를 다시 입력 할 필요가 없습니다. 팁: 이 값은 일반 텍스트로 저장되므로 보안상의 이유로이 매개 변수를 지정하지 마십시오. * 예 : 자식 구성 remote.origin.url https : //eric@github.com/eric/myproject

@Update-사용 ssh

설정 단계가 조금 더 복잡하더라도 ssh프로토콜 사용 이보다 나은 솔루션 이라고 생각 합니다 https.

거친 단계 :

  • ssh-keygen를 들어 Linux에서 Windows msysgit와 같은 명령을 사용하여 ssh 키를 작성하면 유사한 명령이 제공됩니다.
  • 로컬 컴퓨터의 개인 키를 적절한 위치에 유지하십시오 (예 :) ~/.ssh. 그리고 ssh-add명령을 통해 ssh 에이전트에 추가하십시오 .
  • 공개 키를 Git 서버에 업로드하십시오.
  • remote.origin.urlGit 저장소를 ssh스타일로 변경git@gitlab.com:myaccount/myrepo.git
  • 그런 다음 당기거나 밀 때 사용자 이름이나 비밀번호를 입력 할 필요가 없습니다.

팁 :

  • ssh 키에 암호가 있으면 시스템을 다시 시작할 때마다 기본적으로 키를 처음 사용할 때 입력해야합니다.

@Update - 간 전환 httpsssh프로토콜입니다.

단순히 변경하는 것만 remote.origin.url으로 충분하거나 repo_home/.git/config직접 편집 하여 값을 변경할 수 있습니다 (예 : viLinux에서 사용).

일반적으로 각 프로토콜에 대한 줄을 추가하고을 사용하여 그중 하나를 주석 처리하십시오 #.

예 :

[원격 "원산지"
        url = git@gitlab.com : myaccount / myrepo.git
        # url = https : //myaccount@gitlab.com/myaccount/myrepo.git
        가져 오기 = + refs / heads / * : refs / remotes / origin / *

당신은 확실히 있습니까 HTTP [S] 기반 URL 지원 이름 확장? 매뉴얼 git-fetch(1)에서는 git/ ssh기반 URL에 대해서만 언급 합니다.

@ plmday 예, 사용하고 있습니다 .git 버전은 1.8.2.3 및 1.8.4입니다. 높은 버전이 이것에 대해 변경되는지 확실하지 않습니다.
Eric Wang

1
URL에서 비밀번호를 제공하는 NB (HTTPS를 사용하는 경우에도)는 사용자와 저장소 사이의 모든 것이 비밀번호를 볼 수 있음을 의미합니다.
William

3
아니요, 비밀번호를 입력 https://username:password@github.com/해도 안전합니다. 참조 stackoverflow.com/questions/4980912/...
slowhand

1
그리고 이것이 제가 찾고 있던 것이 었습니다 (완전 자동화를 위해)
Joshua

16

Git에서 GitHub 비밀번호를 캐시 할 수 있습니다 :

GitHub 공식 문서 의 지침을 따르십시오 .

위 링크의 지침을 따른 후에는 매번 사용자 이름 / 암호를 입력하지 않고 리포지토리로 밀거나 당길 수 있습니다.


5
이것은 가장 좋은 답변이며 여기에 허용되는 IMO 여야합니다
TheZuck

1
동의, 공식 문서를 인용 한 답변이 우선해야합니다. 나는 기꺼이 지시 사항을 따르고 표준 규칙을 사용하는 것을 선호합니다.
johnnieb

10

다른 옵션이 있습니다.

쓰는 대신

git push origin HEAD

당신은 쓸 수 있습니다 :

git push https://user:pass@yourrepo.com/path HEAD

분명히 대부분의 쉘에서는 암호가 히스토리에 캐시되므로 암호를 명심하십시오.


1
Bash에서 하나 이상의 선행 공백을 추가 하면 일반적으로 기록에서 제외됩니다. 그러나 Git Bash 에는 없습니다.
Peter Mortensen

이것은 단순히 나를 위해 일했다 :)
Naveen Kumar V

9

나를 위해 일한 것은 편집 .git/config하고 사용하는 것이 었습니다

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

이것은 암호를 저장하는 안전하지 않은 방법이지만 이것이 문제가되지 않는 환경 / 사례가 있다는 것은 말할 필요도 없습니다.


6

SSH 키 또는 .netrc파일이 작동하지 않으면 간단하지만 덜 안전한 또 다른 솔루션은 git-credential- store-자격 증명을 디스크에 저장하는 도우미입니다.

git config --global credential.helper store

기본적으로 신임 정보는 file에 저장됩니다 ~/.git-credentials. 작성되어 작성됩니다.

이 도우미를 사용하면 암호가 디스크에 암호화되지 않고 파일 시스템 권한으로 만 보호됩니다. 이것이 허용 가능한 보안 상충 관계가 아닐 수 있습니다.


5

나는 같은 문제가 있었다.

.git/config프로젝트 에서 파일을 변경했습니다 .

url = https://github.com/<your-user-here>/<your-repo-here>

url = git@github.com:<your-user-here>/<your-repo-here>

설정중인 Git 프로파일에 SSH 공개 키를 추가했습니다.

SSH 공개 키의 경우 :

cat ~/.ssh/id_rsa.pub

1
cat ~/.ssh/id_rsa.pubrsa 키 를 가져 와서 git 웹 포털 설정에 붙여 넣습니다.
Anupam Maurya

4

HTTPS 업데이트 :

GitHub는 HTTPS를 사용할 때 자격 증명을 저장하는 새로운 Windows 용 프로그램을 시작했습니다.

쓰다:

  • 여기 에서 프로그램을 다운로드 하십시오

  • 프로그램을 실행하면 .gitconfig파일 이 편집 됩니다. .gitconfig여러 개가있는 경우 올바르게 편집했는지 다시 확인하십시오 . 올바른 것을 수정하지 않은 경우 다음을 추가하십시오..gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    이후 줄 바꿈에 유의하십시오 [credential]. 필수입니다.

  • 명령 행 클라이언트를 열고 git push origin master한 번 시도하십시오 . 암호를 묻는 메시지가 나타나면 암호를 입력하십시오. 비밀번호가 저장되었습니다!


감사합니다 Varun, 매력을 일했습니다!
Joyy

4

Windows Git 사용자의 경우을 (를) 실행 한 후에도 git config --global credential.helper store여전히 비밀번호를 묻는 메시지가 표시되면이 명령을 사용하여 구성 파일이 작성된 위치를 확인하는 것이 좋습니다.

git config --list --show-origin

필자의 경우 구성 파일 'C : \ Program Files \ Git \ mingw64 \ etc \ gitconfig'를 수동으로 편집하고 다음 텍스트를 추가 한 후에 작동했습니다.

[credential]
    helper = store

3

기본적으로 두 가지 옵션이 있습니다.

두 컴퓨터에서 같은 사용자를 사용하는 경우 .pub 키를 PC에 복사해야하므로 GitHub는 사용자가 같은 사용자임을 알고 있습니다.

PC 용으로 새 .pub 파일을 생성하고 머신을 다른 사용자로 취급하려면 GitHub 웹 사이트에서 새 .pub 파일을 등록해야합니다.

그래도 작동하지 않으면 ssh가 올바르게 구성되지 않았고 ssh가 키 위치를 찾지 못했기 때문일 수 있습니다. 시험

ssh -vv username@github.com

SSH 실패 이유에 대한 자세한 정보를 얻으려면.


3

Git 구성 파일을 직접 업데이트합니다 ( 멋진 명령을 기억하지 않으려는 경우 ).

.git/config자주 사용하는 텍스트 편집기에서 파일을 엽니 다 . 복제 한 폴더 또는 수행 git init한 저장소에 있습니다. 해당 저장소로 이동하십시오. .git은 숨겨진 폴더이며 Ctrl+ H를 누르면 숨겨진 폴더 가 표시 ls -a됩니다 (터미널).

아래는 .git/config파일 샘플입니다 . 이 줄을 복사하여 붙여 넣고 Git 정보로 해당 줄을 업데이트하십시오.

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

SSH에 대해 다음 형식으로 URL 부분을 변경하십시오.

url = git@github.com:happy_feet/my_code.git

( 위의 형식은 GitHub 또는 Bitbucket과 같은 다양한 Git 원격 서버에서는 변경되지 않습니다. 버전 제어에 Git을 사용하는 경우에도 동일합니다 .)

참고 : SSH를 원격 Git 리포지토리에 연결하려면 공용 SSH 키를 Git 원격 서버에 추가해야합니다 ( GitHub 또는 Bitbucket 등. 설정 페이지에서 SSH 키 검색 ).

SSH 키를 생성하는 방법은 SSH 키 작성을 참조하십시오.


2

이것이 나를 위해 일한 것입니다.

git remote set-url origin https://username@github.com/username/reponame.git

예:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

답변을지지 해 주셔서 감사합니다
Mandeep Singh

2

두 단계를 수행해야합니다-

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

Git URL은 HTTPS URL이 아닌 SSH URL입니다 ... 여기에서 선택할 수 있습니다.

여기에 이미지 설명을 입력하십시오


2

SSH 대신 HTTPS를 복제하고 풀시 사용자 이름 및 비밀번호 프롬프트와 관련된 문제가 발생하면 푸시하고 가져 오십시오. 이 문제는 UBUNTU에 대해서만 간단하게 해결할 수 있습니다

1 단계 : 루트 디렉토리로 이동

cd ~/

.git-credentials 파일을 만듭니다.

이 컨텐츠를 귀하 usename password와 함께 해당 파일에 추가하십시오.githosting URL

https://user:pass@example.com

그런 다음 명령을 실행하십시오.

git config --global credential.helper store

이제 번거 로움없이 리포지토리에서 모든 세부 정보를 가져 와서 가져올 수 있습니다.


0

Windows에서 Git (예 : Git Bash)을 사용중인 경우 (HTTPS에서 SSH로 전환하지 않으려는 경우) Windows 용 Git Credential Manager를 사용할 수도 있습니다.

이 응용 프로그램은 당신을 위해 사용자 이름과 암호를 유지합니다 ...


0

많은 사용자가 말했듯이 Git 리포지토리 URL을 HTTPS에서 SSH로 변경하기 만하면됩니다.

컴퓨터에서 SSH 키를 생성하지 않은 경우 SSH 키를 생성해야합니다.

추가 정보와 마찬가지로이 변경을 수행 한 후에도 여전히 동일한 오류가 발생했습니다.

권한이 거부되었습니다.

필자의 경우 문제는 Windows Shell을 사용하여 ngh 명령을 실행했다는 것입니다. 이 명령은 SSH 구문을 요청하는 프롬프트를 열어야하고 Windows Shell이 ​​이러한 종류의 프롬프트를 열지 않기 때문에 인증이 실패했습니다.

그래서, 그냥 Git 쉘을 열고 ngh 명령을 실행해야했습니다. SSH를 요청할 때마다 프롬프트에 SSH 문구를 넣고 "voilà"... 제대로 작동했습니다!


0
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

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