Git on Bitbucket : 공개 SSH 키를 업로드 한 후에도 항상 비밀번호를 요청했습니다.


180

내 업로드 ~/.ssh/id_rsa.pub의 Bitbucket의 SSH 키설명 하지만 힘내는 여전히 모든 작업 (예에서 비밀번호 나에게 묻는다 git pull). 내가 뭐 놓친 거 없니?

개인 저장소 (다른 사람의 개인 저장소 포크)이며 다음과 같이 복제했습니다.

git clone git@bitbucket.org:Nicolas_Raoul/therepo.git

내 지역은 다음과 같습니다 .git/config.

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

동일한 공개 키를 가진 동일한 환경에서 Git on Github가 제대로 작동합니다.
.ssh이다 rwx------, .ssh/id_rsa이다 -rw-------, .ssh/id_rsa.pub이다-rw-r--r--

답변:


265

ssh url을 사용하여 복제 했습니까?

origin의 URL에 url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.githttps를 사용하는 경우 ssh 키에 관계없이 비밀번호를 묻습니다.

따라서 원하는 것은 다음과 같습니다.

현재 리포지토리에서 구성 파일을 엽니 다.

vim .git/config

URL이있는 줄을

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

62
네 말이 맞아, 고마워! 나는 아마도 잘못된 URL로 복제했을 것입니다. 나는에 URL을 대체 .git/configgit@bitbucket.org:Nicolas_Raoul/therepo.git지금은 작동한다!
니콜라스 라울


3
저장소를 만들 때 https URL을 제안한 사람은 bitbucket이었습니다! 어떻게 오세요!
Denis Kniazhev

4
비트 버킷이 비공개 인 경우 git 프로토콜을 사용하려면 설정에서 BitBuket 웹 사이트에 ssh 키를 추가해야합니다.
cevaris

7
접두사 ssh://git@bitbucket.org/userName/repoName.git없이 URL을 (으)로 변경해야 ssh://작동하지 않았습니다.
trygub

34

여기 에 설명 된 것처럼 SSH URL로 복제하는 경우 , 밀거나 당길 때마다 사용자 이름 / 암호를 입력 할 필요 가 없습니다 . 위의 답변 을 @manojlds로 확인하십시오.

그러나 HTTPS 로 복제하고 매번 사용자 이름 / 비밀번호를 입력 하지 않으 려면 아래 명령 을 사용 하여 자격 증명을 캐시에 저장할 수 있습니다 .

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

여기서 3600 (초)은 1 시간을 의미하며 요구 사항에 따라 변경할 수 있습니다.


@atilkan이 경우 머신 / OS 및 자식 버전 정보를 제공 할 수 있습니까? 캐시 설정을 시도 할 때 오류 메시지가 표시됩니다.
Ajeet Shah

누군가의 저장소 양식 bitbucket을 복제했으며 여기에 리모컨이 있습니다. manecs-MBP:LocationTracker manec$ git remote -v origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (fetch) origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (push)
Banee Ishaque K

@AjeetShah 잘못된 비밀번호를 입력하면 어떻게됩니까? 잘못된 암호를 캐시합니까?
anaval

@anaval 왜 시도하지 않습니까? 캐시를 지우거나 비활성화 한 후 올바른 암호를 입력 해보십시오. 편집 대답 우리는 당신이 :) 어떻게했는지 알려
Ajeet 샤

19

이미 위에서 대답했습니다. 위에서 확인할 단계를 요약하겠습니다.

git remote -v프로젝트 디렉토리에서 실행하십시오 . 출력에 원격 URL로 시작하는 것이 표시되면 https://abc매번 사용자 이름 비밀번호가 필요할 수 있습니다.

따라서 원격 URL 실행을 변경하십시오 git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}.

이제 git remote -v 변경된 원격 URL을 확인하기 위해 실행 하십시오.

참조 : https://help.github.com/articles/changing-a-remote-s-url/


16

앞으로 Google 직원 여러분 안녕하세요.

맥 OS> = 높은 시에라에서 SSH 키를 더 이상 키 체인에 저장되지 않습니다 때문에 이유 .

사용하여 ssh-add -K더 이상은 아니라 다시 시작 남아 없습니다.

가능한 해결책 은 다음과 같습니다 .

첫 번째 방법을 성공적으로 사용했습니다. 나는라는 파일을 만든 config에서를 ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

2
더 많은주의가 필요합니다! 나는 해결책을 찾기 위해 오랜 시간을 보냈고 config파일이 있는 첫 번째 솔루션 /.ssh은 완벽합니다!
Kitson

1
이 답변은 MacOs에서 내 문제를 해결했습니다 : cd ~/.ssh+ ls+ nano config(파일이 이미 생성되었습니다) + Vaiden의 답변에 코드를 추가하십시오. 그런 다음 X + Y를 제어하여 파일을 저장하십시오.
Sébastien Gicquel

9

HTTP 요청의 경우, 신임 정보 (비밀번호 포함)를 URL에 직접 붙여 넣을 수도 있습니다.

http://username:password@bitbucket.org/...

이렇게하면 매번 자격 증명을 다시 제공해야하는 번거 로움이 줄어 듭니다. .git / config (url)를 간단히 수정하십시오.


10
그러나 안전하지 않습니다. 암호에 다음과 같은 문자가 있으면 작동하지 않습니다.$%
Gank

3
이 의견을 읽는 사람은 그것이 작동 한다고해서 그것이 옳다 는 것을 의미하지는 않는다는 것을 기억하십시오 . 비밀번호를 어디에서나 영구적으로 복사하는 경우 비밀번호를 잘못 입력 한 것입니다. 항상 폴더 권한을 설정 777, 중지, 생각, 조사, 이해 및 올바르게 수행 하는 사람과 동일합니다 .
dKen

9

이 답변들 중 어느 것도 도움이되지 못했습니다. 제 문제는 약간 다릅니다. 키를 보내기 전에 매번 내 비밀번호를 묻는 것이 ssh였습니다. 그래서 내가해야 할 일은 내 비밀번호를이 명령과 연결하는 것입니다.

ssh-add -K ~/.ssh/id_rsa

그런 다음 암호를 입력하라는 메시지가 표시되고 저장됩니다. 암호를 입력하라는 메시지가 표시 될 때마다 원하는 해결책이 될 수 있습니다.

키 '/Users//.ssh/id_rsa'의 암호를 입력하십시오.

더 많은 정보는 여기에

참고 :이를 내 Mac 컴퓨터에서 성공적으로 사용했지만 @Rob Kwasowski가 아래에서 지적했듯이 대문자 K옵션은 mac에 고유합니다. Mac에 없다면 소문자를 사용해야합니다 k(mac에서도 작동하지만 테스트하지는 않았습니다).


1
훌륭하지만 소문자 여야합니다 k.ssh-add -k ~/.ssh/id_rsa
Rob Kwasowski

좀 더 자세히 설명해 주시겠습니까?
stackPusher

여기에 설명 된대로 : ssh.com/ssh/add 명령 행 옵션은 대소 k문자를 구분하지 않으므로 대문자가 아닌 소문자 입니다.
Rob Kwasowski

소문자 k는 에이전트에 키만 추가하는 반면 대문자 K 옵션은 키 체인에 키를 추가합니다. 그래서 내가 묻는 것은 '키가 키 체인에 추가되기를 원하지 않는 이유는 무엇입니까?'입니다.
stackPusher


5

나는 생각 Step 1입니다 WindowsStep 2입니다 Linux하지만 당신은 제대로 그것을 언급 잊어 버렸습니다.
Ajeet Shah

내 Windows 상자에서 3 단계를 실행했는데 효과가있었습니다.
webdev5

2
이 경우 Linux OS에서 추가하고 싶습니다. 동일한 효과를 위해 step2와 step3 만 필요합니다.)
Ajeet Shah

4

다음은 iTerm / 터미널을 통한 bitbucket에 대한 명령 행 액세스를 가정합니다.

들어 맥 OS 시에라 10.12.5, 내 시스템은 해당 문제를 각성 -의 bitbucket 각 연결에 내 SSH 암호를 요구.

이 문제는 macOS 10.12.2의 OpenSSH 업데이트와 관련이 있으며 여기에서는 기술 노트 TN2449 에 설명되어 있습니다 .

솔루션을 조정하고 싶을 수도 있지만 ~ / .ssh / config 파일에 추가하면 다음이 작동합니다.

Host *
    UseKeychain yes

ssh 설정에 대한 자세한 내용은 ssh_config 매뉴얼 페이지를 참조하십시오.

% man ssh_config

또 한가지는 : 좋은 쓰기 업에가 수퍼 유저 여기에 이 문제와 요구 사항과 설정에 따라 다양한 솔루션에 대해 설명합니다.


2

SSH URL 대신 HTTPS URL을 사용하여 리포지토리를 복제 했으므로 SSH 키를 추가 한 후에도 Bash Shell에서 암호를 요청했습니다.

방금 ./.git/config파일을 편집 url하고 https://to를 간단히 바꾸어 변수 의 값을 변경 했습니다.ssh://

예 :

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

로 변경:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

1

SSH ID 파일을 다시 확인해야 할 수도 있습니다. BitBucket에 저장 한 동등한 공개 키와 다르거 나 잘못된 개인 키를 보도록 BitBucket을 안내 할 수 있습니다.

그것을 확인하십시오 tail ~/.ssh/config-당신은 비슷한 것을 볼 것입니다 :

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

ssh-add예를 들어 다음 과 같은 명령 으로 추가 신원 (예 : 직장 및 집)을 추가 할 수 있습니다 .

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

로컬에서 어떤 개인 키를보고 있는지 확인한 후에는 다음과 같은 공개 키를 사용할 수 있습니다.

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

그리고 그 암호를 BitBucket에 붙여 넣습니다. 장치가 잘 인식되어 있으므로 암호없이 git pushs (앞서 언급 한 답변에서 지적한 것처럼 SSH 클론을 사용하는 경우)가 허용됩니다.

잘하면 이것은 누군가를 위해 그것을 정리하는 데 도움이됩니다.


0

나와 함께 'git clone ssh : //git@stash.xxx.com : 7999 / projName / projA.git'을 실행했지만 복제 한이 새로운 리포지토리에 대한 암호를 입력하라는 메시지가 계속 표시되었습니다. / config 파일이 작동하는 다른 리포지토리로, [remote "origin"] 섹션의 URL로 밝혀졌으며 새 리포지토리의 경우 위의 ssh 경로로 설정되었지만 작동하는 리포지토리의 경우 https : xxx로 설정되었습니다. .


0

나는 로그인과 관련하여 다른 이상한 점을 가지고 있었다. 나는 완전히 바보처럼 보이지만 내 경우에는 효과가 있었던 것을 발견했다. MacOS의 키 체인으로 이동하십시오. 사이드 바에서 로그인 잠금 아이콘을 찾으십시오. 클릭하여 로그 아웃 한 다음 클릭하여 로그인하십시오. 바보 같지만 내 문제를 해결했습니다. 한 번 가치가 있습니다.

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