it-swarm.com.ru

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

Я пытаюсь клонировать репо из моей учетной записи BitBucket на мой ноутбук с Windows 10 (на котором работает GitBash). Я выполнил все шаги, необходимые для подключения (настроил мой ключ SSH, подтвержден успешно SSHing [email protected] и т.д.). Однако всякий раз, когда я пытаюсь клонировать репо, Подсказка постоянно зависает после подтверждения того, что я хочу кешировать ключ Bitbucket. 

[email protected] MINGW64 /C/Repos
$ git clone [email protected]: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 из этого репозитория также запрашивает кеширование ключа, а затем зависает без обратной связи. Несмотря на то, что я не запрашиваю ключ для кэширования, когда я выполняю тестовый SSH, операции git всегда запрашивают ключ каждый раз перед сбоем.

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

108
MarathonStudios

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

Я справился с этим, используя PuTTY GUI для SSH к рассматриваемому серверу (в вашем случае: bitbucket.org), затем щелкнул «Да», когда в подсказке появится вопрос, хотите ли вы сохранить ключ сервера в кеше. Повторное выполнение команды клонирования затем сработало для меня!

126
theChumpus
  1. Открытая замазка
  2. Введите имя хоста (например, bitbucket.org)
  3. Нажмите Открыть
  4. Нажмите Да во всплывающем окне для кэширования ключа хоста.
  5. Закрыть PuTTY
86
cambunctious

Чтобы сделать это из 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

18
Tim Abell

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

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 сайте.

Смотрите этот SO вопрос для соответствующей информации.

2
Schparky

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

2
benjaminRRR

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

Чтобы добавить параметр -batch в команду plink, выполняемую GitBash, вы можете установить опцию 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 [email protected]

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

/c/Program\ Files/PuTTY/plink.exe -batch
2
Paweł Weselak

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

0
Richard Jessop

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

0
Vlad