"캐시의 키 저장?"


159

BitBucket 계정의 저장소를 Windows 10 랩톱 (GitBash 실행)으로 복제하려고합니다. 연결하는 데 필요한 모든 단계를 완료했습니다 (SSH 키 설정, git@bitbucket.org의 SSH를 통해 확인). 그러나 리포지토리를 복제하려고 할 때마다 Bitbucket 키를 캐시 하려는지 확인한 후 프롬프트가 계속 끊어집니다.

User@Laptop MINGW64 /C/Repos
$ git clone git@bitbucket.org:mygbid/test.git
Cloning into 'test'...
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y

파일이 복제되지 않으며 결과는 빈 저장소입니다. 이 저장소에서 git pull origin master를 시작하려고하면 키를 캐시하도록 요청 한 다음 피드백없이 중단됩니다. 테스트 SSH를 수행 할 때 키를 캐시하지 않아도 git 작업은 실패하기 전에 항상 키를 요청합니다.

오류 메시지가 없어서 실제로 무엇이 잘못되었는지 잃어 버렸습니다. 나는 아주 작은 것들을 포함하여 여러 번의 repos를 시도했지만 전혀 성공하지 못했습니다.

답변:


188

Windows 10에서 리포지토리를 복제 할 때도이 문제가 발생했습니다.

Putty GUI를 사용하여 문제의 서버에 SSH로 SSH를 사용하여 문제를 해결 한 다음 (예 : bitbucket.org) 서버 키를 캐시에 저장할 것인지 묻는 메시지가 표시되면 '예'를 클릭했습니다. clone 명령을 다시 실행하면 나를 위해 일했습니다!


20
이것은 나를 위해 직접 수정하지는 않았지만 문제가 OpenSSH 대신 ssh 인증을 위해 Putty를 사용하는 GitBash와 관련이 있음을 알게되었습니다. GIT_SSH 시스템 변수를 삭제하고 GitBash를 재설정하면 모든 것이 잘 작동합니다. 감사!
MarathonStudios

2
사용하여 putty추가 github캐시에 중요한 것은 나를 위해 일한
오크

4
이것은 명령 콘솔을 사용하여 Win 7에서 나를 위해 일했습니다. 누군가가 단순한 해결 방법이 아닌 왜 이런 일이 있었는지 말해 줄 수 있기를 바랍니다.
soulsabr 2019

1
누구든지 위에서 언급 한 해결책을 말할 수
있습니까

2
@Shreyan Mehta는 호스트 이름 붙여 넣기 git@github.com (또는 사용중인 호스트) 아래에 퍼티를 엽니 다. SSH의 연결 유형을 선택하십시오. 포트 번호는 22 여야합니다. ssh 키를 시작하기 전에로드해야합니다.
Mr.Invisible

110
  1. 퍼티 열기
  2. 호스트 이름을 입력하십시오 (예 bitbucket.org:).
  3. 열기를 클릭하십시오
  4. 팝업에서 예를 클릭하여 호스트 키를 캐시하십시오.
  5. 퍼티 닫기

나는 같은 문제가 있었다. git의 출력을 보면 git이 호스트 키를 캐시하지 못하는 것 같습니다 (아마도 버그). 따라서 PuTTY GUI를 사용하여 수행해야합니다.
모호한

나는 모든 단계를 시도했지만 'y'또는 'n'을 선택하면 아무것도 도약하지 않습니다. Git Bash는 아무것도하지 않습니다
testsingh

2 단계에서 올바른 호스트 이름을 입력 했습니까? Git Bash를 다시 시작하셨습니까?
모욕적 인

1
이것이 허용되는 답변과 다른 점은 무엇입니까?
zb226

1
단계를 제공함에 따라이 답변에 투표했습니다. 나는 받아 들인 대답과 같은 해결 방법 (연결하는 모든 SSH 서버에 대해 이것을 반복해야 함)이 마음에 들지 않습니다.
ShooShoSha

26

powershell에서이를 수행하려면 powershell 창을 열고 다음을 붙여 넣으십시오.

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@bitbucket.org

또는 PuTTY 독립형 버전 :

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@bitbucket.org

또한 퍼티 는 레지스트리 키 아래에 알려진 호스트를 저장합니다 .

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

위의 바로 가기를 .reg파일에 넣고 실행할 수 있습니다.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:gist.github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:bitbucket.org"="0x23,0xb9b88df3578371a7eb80c78bcda14fb30da436f11ca932a5fd5a8b6adfcc681df7a59cb4cb7ac966d9eac11daa38ebdbc0a6582a210ed4ee95a8d101c4abc925e942ab47535d64f9a5b3b68035c2ea1e900d709a1e8ea938718f532f9805a190446b92bac3040126225ae9d8374bc2008f106979d631734c7453f78c70091f4783b288869cb3c1941a784cd9baad823be27333833dc1f488a45b85952be75cf0a64965662302e3915378dcd5cfcd3ec903d804a29dff2fdf19df5deba4534b09e4dea6e44f152e339b3c43be98ddadfc56533192e216a3d673f00b4aa9cc9e7870acd8b6adb7e0feb77f2292fc2dede94819def3eb1e785541a06ab31ccf725f"

putty-hosts.reg 요점



2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
방위각

리모컨이 22 이외의 포트에서 작동하는 경우, -P <port>인수 를 전달하여 포트와 plink를 실행해야합니다 .
PitaJ

20

pant 명령을 직접 실행 plink.exe -agent -v git@github.com한 후 plink 명령을 직접 실행하여 plink를 직접 실행하여 작동하도록했습니다 .이 git이 멈추지 않고 작동합니다.


3
좋은 해결책! 답변으로 표시되어야합니다
ZenithS

이것이 가장 좋은 대답입니다.
브라이언 레이스

5

이 문제를 해결하기 위해 -batch옵션 과 함께 plink를 사용하도록 GitBash를 구성했습니다 . 이 옵션은 모든 프롬프트를 비활성화합니다. plink는 중단되지 않고 종료되며 캐시에 키 지문을 추가하지 않습니다.

-batchGitBash가 실행하는 plink 명령 에 파라미터 를 추가하려면 git config 옵션을 설정할 수 있습니다 :

git config --global core.sshCommand "plink -batch"

또는 GIT_SSH_COMMAND환경 변수를 설정 하십시오.

알 수없는 호스트에서 저장소를 복제 할 때의 출력은 다음과 유사합니다.

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
Connection abandoned.
fatal: Could not read from remote repository.

이 메시지 후에 다음 명령으로 캐시 할 키를 추가 할 수 있습니다.

echo y | plink git@bitbucket.org

비고 :에 plink가 있는지 확인하십시오 PATH. 또는 GitBash 설정 옵션에서 UNIX와 같은 경로를 사용하십시오 :

/c/Program\ Files/PuTTY/plink.exe -batch

1
HI이 메시지가 나타납니다 : 치명적 오류 : 연결이 끊어졌습니다 : 지원되는 인증 방법이 없습니다 (서버 전송 : 공개 키)
pungggi

4

다른 답변에서 언급 한 해결 방법을 수행 한 후에도 다음과 같은 오류가 발생할 수 있습니다.

치명적인 오류 : 연결이 끊어졌습니다 : 지원되는 인증 방법이 없습니다 (서버 전송 : 공개 키).

두 문제를 한 번에 해결하려면 git bash를 PuTTY 대신 SSH를 사용하도록 변경하여 ~/.profile파일에 다음을 추가 하십시오 ( C:\Users\<Username>\.profile). 이 파일이 없으면이 줄로 새 파일을 만드십시오.

GIT_SSH="/usr/bin/ssh.exe"

그리고 새로운 자식 강타 창을 열고 시도 git clone또는 git pull다시.

SSH 키가없는 경우 SSH 키를 만들어야 할 수도 있습니다. 이렇게하려면 Bitbucket 사이트 의 지침을 따르십시오 .

관련 정보는 이 SO 질문 을 참조하십시오 .


1

git bash 셸에서 GIT_SSH가 있는지 확인하십시오.
echo $GIT<tab><tab>
존재하고 퍼티로 설정되어 있으면 다음을 실행하십시오.
unset GIT_SSH
git bash 시작 스크립트 중 하나에 넣을 수 있습니다.
이것은 보편적 인 해결책이 아닙니다. 우리의 특별한 경우에 효과가있었습니다.


'git bash startup script'는 무엇입니까? 나는 실제 리눅스에만 익숙하다.
Jeff K

여러 개의 시작 스크립트가 있습니다. 일부는 / etc 디렉토리에 있습니다. 다른 사람은 홈 디렉토리에있을 수 있습니다. 실행되는 시작 스크립트는 셸의 명령 줄 옵션 (대화식 및 로그인)에 따라 다릅니다. 이들은 쉘이 실행되는 OS에 관계없이 관련이 있습니다.
Richard Jessop

Windows에는 '/ etc'디렉토리가 없습니다.
Jeff K

Windows에서 실행되는 Bash 쉘은 그렇게합니다. 이들은 일반적으로 쉘의 기본 (또는 설치) 디렉토리에 매핑됩니다. git bash와 Cygwin bash를 살펴보십시오. 이것들은 리눅스 시스템에서 쉘처럼 보이고 작동하는 쉘입니다.
Richard Jessop

0

조금 바보 같지만 위의 모든 것을 시도한 후에 기본 옵션으로 Git Bash를 다시 설치하기로 결정했으며 효과가있었습니다.

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