Windows에서 Git 및 BitBucket을 시작한 사람들과 Bash에 익숙하지 않은 사람들을 위해 이것을 작성하십시오 (질문 내에서 오류 메시지를 검색 할 때 일반적인 문제이자 높은 순위의 Google 결과이기 때문에).
HTTPS가 마음에 들지 않고 빠른 해결책을 찾는 사람은이 답변의 맨 아래로 스크롤하여 FOR THE LAZY
실제 문제를 해결하려는 경우 아래 지침을 따르십시오.
SSH 문제를 가능한 빨리 해결
이것은 VonC에 의해 연결된 URL에서 파생 된 일련의 지침입니다. 가능한 탄력적이고 간결하도록 수정되었습니다.
아직 글로벌 정보를 설정하지 않은 경우 :
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
OpenSSH를 확인하십시오.
$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...
그런거 보여?
- 예 : 계속하십시오.
- 아니요 : FOR THE LAZY 섹션으로 건너 뛰 거나 VonC의 링크 된 기사를 따르십시오.
키를 이미 생성했는지 확인하십시오.
$ ls -a ~/.ssh/id_*
파일이 두 개인 경우 다음 단계를 건너 뛸 수 있습니다.
$ ssh-keygen
모든 것을 기본값으로두고 암호를 입력하십시오. 이제이 명령으로 결과를 볼 수 있습니다 :
$ ls -a ~/.ssh/id_*
기존 구성 파일을 확인하십시오.
$ ls -a ~/.ssh/config
결과가 나오면이 파일에서 잘못된 정보를 확인하십시오. 파일이 없으면 다음을 수행하십시오.
$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config
내용을 확인하십시오 :
$ cat ~/.ssh/config
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa
- "IdentityFile"앞의 단일 공간이 필요합니다.
GitBash를 실행할 때마다 SSH 에이전트를 시작하는지 확인하십시오.
$ cat ~/.bashrc
- 이라는 함수가 표시
start_agent
되면이 단계는 이미 완료된 것입니다.
- 파일이 없으면 계속하십시오.
- 이 기능을 포함하지 않는 파일이 있으면 끈적 거리는 상황입니다. 아래 지침을 사용하여 추가하는 것이 안전하지만 그렇지 않을 수도 있습니다! 확실하지 않은 경우 아래 지침을 따르기 전에 .bashrc를 백업하거나 FOR THE LAZY 섹션으로 건너 뛰십시오 .
GitBash에 다음을 입력하여 .bashrc 파일을 생성하십시오 :
$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo " echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo " # spawn ssh-agent" >> ~/.bashrc
$ echo " /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo " echo succeeded" >> ~/.bashrc
$ echo " chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo " . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo " /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo " . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo " ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo " start_agent;" >> ~/.bashrc
$ echo " }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo " start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc
파일이 성공적으로 작성되었는지 확인하십시오 ( "yourusername"이 나타나는 위치에서만 다름).
$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.ssh/environment
# start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
- GitBash를 닫았다가 다시여십시오.
- 비밀번호 문구를 요청해야합니다 (이전에 생성 한 SSH 파일의 경우).
- 프롬프트가 없으면 암호를 설정하지 않았거나 GitBash가 .bashrc 스크립트를 실행하지 않는 것입니다 (이상한 내용이므로 검토하십시오!). Mac (OS X)에서 이것을 실행하면
.bashrc
기본적으로 실행되지 않습니다-is .bash_profile
. 이 문제를 해결하려면이 스 니펫을 다음에 넣으십시오 .bash_profile
.[[ -s ~/.bashrc ]] && source ~/.bashrc
암호를 입력하지 않았다면 GitBash를 시작할 때 다음과 같은 내용이 표시 될 것입니다.
Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)
그리고 다음 결과를 반환해야합니다.
$ ssh-add -l
그러나 다음에서 얻는 경우 ssh-add -l
:
Could not open a connection to your authentication agent.
SSH 에이전트를 생성하지 않았으며 .bashrc가 원인 일 수 있습니다.
GitBash를 시작할 때 다음이 표시되면
Initializing new SSH agent...
sh.exe": : No such file or directory
즉, 파일에 에코 할 때 \로 $를 이스케이프하지 않았 음을 의미합니다 (예 : 변수가 확장 됨). 이 문제를 해결하려면 .bashrc를 다시 만드십시오.
에이전트가 실행 중이고 키가 추가되었는지 확인하십시오.
$ ssh-add -l
이와 비슷한 것을 반환해야합니다.
2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)
공개 키를 얻으려면 다음 명령을 실행하십시오.
$ cat ~/.ssh/id_rsa.pub
( "ssh-rsa ......"로 시작하는 것을 반환해야합니다.
- GitBash 창 아이콘을 클릭하십시오
- 편집을 클릭하십시오
- 마크 클릭
- 마우스를 사용하여 공개 키를 강조 표시합니다 (선행
ssh-rsa
비트 및 후행 == youremail@yourdomain.com
비트 포함)
- 창을 마우스 오른쪽 버튼으로 클릭 (복사 수행)
- 공개 키를 메모장에 붙여 넣습니다.
- 한 줄만되도록 모든 줄 바꿈을 삭제하십시오.
- 눌러
CTRL+A
다음 CTRL+C
클립 보드에 다시 공개 키를 복사합니다.
다음 단계를 수행하여 BitBucket으로 개인 키를 구성하십시오.
- 브라우저를 열고 BitBucket.org 사이트로 이동 하십시오
- BitBucket.org에 로그인
- 아바타를 클릭하십시오 (오른쪽 상단)
- 계정 관리를 클릭하십시오.
- 왼쪽 메뉴의 보안 아래에서 SSH 키를 클릭하십시오.
- 키 추가를 클릭하십시오
Global Public Key
라벨 입력
- 메모장에서 복사 한 공개 키 붙여 넣기
Global Public Key
항목은 현재 키 목록에 표시해야한다.
- GitBash로 돌아 가기
- 프로젝트가 들어있는 디렉토리에 cd
- (당신이 실행 한 경우가되지 않습니다 SSH 변화에 원산지 변경 에 대한 LAZY의 단계를)
리모컨 확인 :
$ git remote -v
SSH URL로 전환하십시오.
$ git remote set-url origin git@bitbucket.org:youraccount/yourproject.git
물건이 제대로 작동하는지 확인하십시오.
$ git remote show origin
다음과 같이 보일 것입니다 :
Warning: Permanently added the RSA host key for IP address '...' to the list of known hosts.
* remote origin
Fetch URL: git@bitbucket.org:youruser/yourproject.git
Push URL: git@bitbucket.org:youruser/yourproject.git
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
끝난!
SSH 대신 HTTPS를 사용하도록 선택할 수 있습니다. 원격 작업 중에 암호를 입력해야합니다 (한 번 입력하면 임시로 캐시 됨). HTTPS를 구성하는 방법은 다음과 같습니다.
게으른
VonC에서 설명한대로 SSH 문제를 해결해야합니다. 그러나 커밋을 서두르고 현재 새 공개 키를 생성하는 도구 / 시간 / 지식 이없는 경우 원본을 HTTPS 대안으로 설정하십시오.
> https://accountname@bitbucket.org/accountname/reponame.git
와 같은 GUI 도구를 사용하여 TortoiseGit 또는 명령 행 도구를 .
이 대체 출처 URL에 대한 설명서는 다음과 같습니다.
원점이없는 경우 명령 줄을 추가합니다.
git remote add origin https://accountname@bitbucket.org/accountname/reponame.git
기존 원점을 변경하는 명령 줄 :
git remote set-url origin https://accountname@bitbucket.org/accountname/reponame.git
참고 : 귀하의 계정 이름은 귀하의 이메일이 아닙니다.
글로벌 정보를 설정할 수도 있습니다.
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
그런 다음 푸시를 다시 시도하십시오 (다시 커밋하지 않아도 됨)
git push origin master