Git clone/pull постоянно замерзает в "Сохранить ключ в кеше?"

Я пытаюсь клонировать репо из моей учетной записи BitBucket на свой ноутбук под управлением Windows 10 (работает GitBash). Я выполнил все шаги, необходимые для подключения (настройте свой SSH-ключ, подтвержденный с помощью SSHing git @bitbucket.org и т.д.). Однако всякий раз, когда я пытаюсь клонировать репо, подсказка постоянно зависает после подтверждения того, что я хочу кэшировать ключ Bitbucket.

[email protected] MINGW64 /C/Repos
$ git clone [email protected]:mygbid/test.git
Cloning into 'test'...
The server host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server 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 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 из этого репо также просит кешировать ключ, а затем висит без обратной связи. Несмотря на отсутствие запроса на кеширование ключа, когда я выполняю тестовый SSH, операции git всегда запрашивают ключ каждый раз перед сбоем.

Без сообщений об ошибках, с которыми можно работать, я действительно не понимаю, что не так. Я пробовал несколько репозиций, в том числе очень маленьких, без каких-либо успехов.

Ответ 1

У меня была эта проблема при клонировании репо в Windows 10.

Я обошел его, используя GUI Putty для SSH на рассматриваемый сервер (в вашем случае: bitbucket.org), затем нажал "Да", когда в запросе спрашивается, хотите ли вы сохранить ключ сервера в кеш. Запуск команды clone снова работал у меня!

Ответ 2

  • Open Putty
  • Введите имя хоста (например, bitbucket.org)
  • Нажмите "Открыть"
  • Нажмите "Да" во всплывающем окне, чтобы кешировать ключ хоста.
  • Закрыть Putty

Ответ 3

Чтобы сделать это из powershell, откройте окно powershell и вставьте следующее:

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]

или с автономной версией PuTTY:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]

Также стоит знать, что putty хранит известные хосты в разделе реестра:

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Чтобы сократить это, вы можете поместить следующее в файл .reg и запустить его:

Windows Registry Editor Version 5.00

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

putty-hosts.reg gist

Ответ 4

Мне удалось заставить его работать, запустив plink напрямую, после запуска plink.exe -agent -v [email protected] используйте команду plink.exe -agent -v [email protected] напрямую - plink.exe -agent -v [email protected] затем этот git работает без зависаний.

Ответ 5

Чтобы обойти эту проблему, я настроил GitBash для использования -batch опцией -batch. Опция отключает все запросы - plink завершится без зависания и не добавит ни одного ключевого отпечатка в кеш.

Чтобы добавить параметр -batch в команду plink, выполняемую GitBash, вы можете установить опцию git config:

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

Или установите переменную среды GIT_SSH_COMMAND.

Вывод при клонировании репо с неизвестного хоста будет примерно таким:

The server host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server 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 [email protected]

ЗАМЕЧАНИЕ: Пожалуйста, проверьте, есть ли plink в вашей PATH. В качестве альтернативы используйте UNIX-подобный путь в опции конфигурации GitBash, например:

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

Ответ 6

Даже после выполнения обходного пути, упомянутого в других ответах, вы можете столкнуться с ошибкой, такой как:

FATAL ERROR: Disconnected: нет поддерживаемых методов аутентификации (сервер отправлен: publickey)

Чтобы решить обе проблемы одновременно, измените git bash на использование SSH вместо PuTTY, добавив следующее в файл ~/.profile (C:\Users\<Username>\.profile). Если у вас еще нет этого файла, создайте новый файл с этой строкой.

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

Затем откройте новое окно git bash и попробуйте ваш git clone или git pull снова.

Обратите внимание, что для этого может потребоваться создать ключ SSH, если у вас его еще нет. Для этого следуйте инструкциям на сайте Bitbucket.

Смотрите этот вопрос так для получения дополнительной информации.

Ответ 7

Это звучит немного глупо, но после попытки всего вышесказанного, я решил переустановить Git Bash с параметрами по умолчанию, и это сработало.

Ответ 8

В вашей оболочке git bash проверьте наличие GIT_SSH:
echo $GIT<tab><tab>
Если он существует и имеет значение putty, выполните:
unset GIT_SSH
Возможно, вы захотите поместить это в один из скриптов запуска git bash.
Это НЕ универсальное решение. Это сработало в нашем конкретном случае.