Git клонує / тягне безперервно заморожуючи в "Store key in cache?"


159

Я намагаюся клонувати репо з мого облікового запису BitBucket до свого ноутбука Windows 10 (під керуванням GitBash). Я виконав усі кроки, необхідні для підключення (встановіть мій ключ SSH, підтверджений успішно SSHing git@bitbucket.org тощо). Однак щоразу, коли я намагаюся клонувати репо, запит постійно зависає після підтвердження, що я хочу кешувати ключ 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 з цього репо, також просить кешувати ключ, а потім зависає без зворотного зв'язку. Не дивлячись на те, що я не вимагаю кешування ключа, коли я роблю тестовий SSH, git-операції завжди вимагають ключ кожного разу перед тим, як вийти з ладу.

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

Відповіді:


188

У мене ця проблема була і під час клонування репо в Windows 10.

Я обійшов це, використовуючи графічний інтерфейс Putty для SSH на відповідному сервері (у вашому випадку: bitbucket.org), після чого натиснув "Так", коли запит запитає, чи хочете ви зберегти серверний ключ у кеш. Виконання команди клонування знову працювало на мене!


20
Це не вирішило це безпосередньо для мене, але це змусило мене зрозуміти, що проблема була пов'язана з GitBash, використовуючи Putty для аутентифікації ssh замість OpenSSH. Коли я видалив системну змінну GIT_SSH і скинув GitBash, все працює добре. Дякую!
MarathonStudios

2
Використовуючи puttyдля додавання githubключа в кеш, працював для мене
дуб

4
Це працювало для мене на Win 7 за допомогою командної консолі. Я б хотів, щоб хтось міг сказати мені, чому це сталося, а не просто вирішення проблем.
соусабр

1
хтось може сказати, як зробити вище вказане рішення
Шреян Мехта

2
@Shreyan Mehta просто відкрийте шпаклівку, вставте ім'я хоста git@github.com (або будь-який хост, який ви використовуєте). Обов’язково виберіть тип з'єднання SSH. Номер порту повинен бути 22. Також перед запуском цього ключа обов'язково завантажте ssh-ключ.
Mr.Invisible

110
  1. Відкрита шпаклівка
  2. Введіть ім'я хоста (як bitbucket.org)
  3. Клацніть Відкрити
  4. Клацніть так у спливаючому вікні, щоб кешувати хост-ключ
  5. Закрийте шпаклівку

У мене була така ж проблема. Дивлячись на вихід з git, здається, що git не вдається кешувати ключ хоста (можливо, помилка). Тому вам доведеться зробити це за допомогою GUI PuTTY.
камбунгіональний

Я спробував усі кроки, але коли я вибираю або "у", або "н", нічого не відбувається, Гіт Баш нічого не робить
тестування

Ви ввели правильне ім'я хоста на кроці 2? Ви спробували перезапустити Git Bash?
камбунгіональний

1
Чим це відрізняється від прийнятої відповіді?
zb226

1
Я проголосував за цю відповідь, оскільки вона передбачає кроки. Мені не подобається, як це вирішується (ви повинні повторити це для кожного SSH-сервера, який ви підключаєте) так само, як прийнята відповідь.
ShooShoSha

26

Для цього відкрийте вікно Powerhell та вставте наступне:

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 gist


2
Дивіться також попереднє запитання та відповідь щодо цього аспекту виправлення
Йосип Родін

2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
Азимут

У випадку, якщо ваш пульт працює з іншим портом, вам потрібно запустити plink з портом, передавши йому -P <port>аргумент.
PitaJ

20

Мені вдалося змусити його працювати безпосередньо за допомогою запуску планкіна, після запуску тестування використовуйте команду plink безпосередньо - plink.exe -agent -v git@github.comтоді після цього git працює без зависання.


3
Приємне рішення! Це повинно було
позначити

Це найкраща відповідь.
Брайан Лейсі

5

Щоб подолати цю проблему, я налаштував GitBash використовувати plink з -batchопцією. Опція вимикає всі підказки - планк припиняється без вивішування і не додає жодного відбитка ключа в кеш.

Щоб додати -batchпараметр команді pluink, виконаній 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 git@bitbucket.org

Зауваження : Будь ласка , перевірте , якщо палити знаходиться в вашому PATH. Альтернативно використовуйте UNIX-подібний шлях у налаштуваннях GitBash, наприклад:

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

1
Здравствуйте, я отримую це повідомлення: ФАТАЛЬНА ПОМИЛКА: Відключено: Немає доступних підтримуваних методів аутентифікації (сервер надісланий: publickey)
pungggi

4

Навіть виконавши рішення, згадане в інших відповідях, ви можете зіткнутися з помилкою на зразок:

ФАТАЛЬНА ПОМИЛКА: Відключено: Немає підтримуваних методів аутентифікації (сервер надіслано: publickey)

Щоб вирішити обидві проблеми одночасно, змініть git bash на SSH замість PuTTY, додавши у свій ~/.profileфайл ( C:\Users\<Username>\.profile). Якщо у вас ще немає цього файлу, тоді створіть новий файл із цього рядка.

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

Потім відкрийте нове вікно git bash і спробуйте git cloneабо git pullзнову.

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

Дивіться це запитання щодо відповідної інформації.


1

У своїй оболонці git bash перевірте наявність GIT_SSH:
echo $GIT<tab><tab>
Якщо вона існує і встановлена ​​на шпаклівку, виконайте:
unset GIT_SSH
Ви, ймовірно, захочете помістити це в один із сценаріїв запуску git bash.
Це НЕ універсальне рішення. Це працювало в нашому конкретному випадку.


що / де "скрипт запуску git bash"? Мені лише знайомий справжній Linux.
Джефф К

Існує кілька сценаріїв запуску. Деякі розташовані в каталозі / etc; інші можуть бути у вашому домашньому довіднику. Які сценарії запуску виконуються залежать від параметрів командного рядка для вашої оболонки (інтерактивний vs вхід). Вони актуальні незалежно від ОС, на якій працює оболонка.
Річард Джессоп

У Windows немає каталогу "/ etc".
Джефф К

Bash оболонки, які працюють під Windows. Зазвичай вони відображаються десь із базового (або встановленого) каталогу оболонки. Погляньте на git bash та Cygwin bash. Пам'ятайте, це оболонки, схожі на них і дуже схожі на оболонку в системі Linux.
Річард Джессоп

0

Це звучить трохи нерозумно, але, спробувавши все вищезазначене, я вирішив перевстановити Git Bash із налаштуваннями за замовчуванням, і це спрацювало.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.