git - ключ хоста сервера не кэшируется - PullRequest
98 голосов
/ 08 февраля 2011

Я пытаюсь перенести изменения из моего локального репо в удаленное репо. Когда я печатаю:

git push origin

Я получаю следующую ошибку:

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 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Connection abandoned.
fatal: The remote end hung up unexpectedly

Как я могу решить это? Я использую Git из командной строки в Windows 7.

1009 ** * Редактировать 1010 ** * 1011

Когда я пытаюсь сделать простой SSH

ssh user@hostname

Я получаю следующую ошибку:

Could not create directory '/c//%HOMEDRIVE%%HOMEPATH%/.ssh'.
percent_expand: unknown key %H

Каким-то образом он не создаст каталог, потому что путь неверен. Как это исправить?

@ eckes: Edit2

Мой дом установлен на %HOMEDRIVE%%HOMEPATH% это правильно?

Ответы [ 16 ]

149 голосов
/ 16 сентября 2012

Для тех из вас, кто настраивает MSYS Git в Windows, используя PuTTY через стандартную командную строку, способ добавить хост в кэш PuTTY - запустить

> plink.exe <host>

Например:

> plink.exe codebasehq.com

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 2e:db:b6:22:f7:bd:48:f6:da:72:bf:59:d7:75:d7:4e
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, а затем Ctrl + C, остальные.

Проверьте отпечаток пальца. Это предупреждение есть по уважительной причине. Отпечатки пальцев для некоторых git-сервисов (пожалуйста, отредактируйте, чтобы добавить больше):

78 голосов
/ 22 февраля 2012

Попробуйте выполнить команду "set | grep -i ssh" из командной строки Git Bash

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

GIT_SSH='C:\Program Files (x86)\PuTTY\plink.exe'
PLINK_PROTOCOL=ssh
SVN_SSH='"C:\\Program Files (x86)\\PuTTY\\plink.exe"'

Я сделал

unset GIT_SSH
unset PLINK_PROTOCOL
unset GIT_SVN

и после этого это сработало, .. Думаю, замазка сохраняет свои ключи где-то еще как $ HOME / .ssh или что-то в этом роде (у меня также была проблема на коробке, где $ HOME былв любом случае установите "C: \ Users \ usrnam" вместо "/ C / Users / usrnam /"

, ваш пробег может отличаться, но это меня исправило.: -)

(вероятно, достаточно просто выполнить unset GIT_SSH, но я был в ударе)

Примечание: если unset не работает для вас, попробуйте это:

set GIT_SSH=
53 голосов
/ 08 февраля 2011

Сообщение означает, что ключ хоста origin отсутствует в файле доверенных хостов.

Чтобы обойти это, откройте простое SSH-соединение с origin, и SSH спросит вас, если выхотите доверять удаленному хосту (из консоли Git):

$ ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is <FINGERPRINT>.
Are you sure you want to continue connecting (yes/no)?

Если вы доверяете удаленному хосту (т. е. наберите yes), SSH добавит свой ключ в список известных хостов.

После этого вы сможете выполнить git push origin.

В качестве альтернативы вы также можете вручную добавить ключ origin к .ssh/known_hosts, но для этого необходимо придерживатьсяформат файла known_hosts, как описано в справочной странице sshd (раздел AUTHORIZED_KEYS ФОРМАТ ФАЙЛА ).

18 голосов
/ 02 апреля 2013

Я подозреваю, что ваша переменная окружения GIT_SSH установлена ​​на %ProgramFiles(x86)%\putty\plink.exe.По какой-то причине PLink не использует файл .ssh/known_hosts в вашем пользовательском каталоге для хранения ключей удаленных хостов.

Если это действительно ваш случай, и это может быть сделано специально, если вы хотите использовать Pageant, вам нужно использовать PLink, чтобы сначала подключиться к хосту.

"$GIT_SSH" user@hostname

Вы должны получить похожее сообщение

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 86:7b:1b:12:85:35:8a:b7:98:b6:d2:97:5e:96:58:1d
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 и успешно подключилиськ удаленному хосту у вас все должно быть готово.Продолжайте и попробуйте снова.

4 голосов
/ 03 февраля 2012

Недостаточно просто ssh'ing для хоста, по крайней мере, для Windows. Это добавляет ключ хоста к ssh/known_hosts, но ошибка все еще сохраняется.

Вам нужно закрыть окно git bash и открыть новое. Затем кэш реестра очищается и работает push / pull.

2 голосов
/ 01 июня 2017

Рабочая среда:

  • Windows 10
  • git
  • шпаклевка

Первая: Удалите putty known_hosts из реестра в соответствии с Regedit.
Затем: Выполнение команды %GIT_SSH% user@hostname в cmd Window решает проблему.

Надеюсь, это поможет вам всем.

2 голосов
/ 22 августа 2013

Возникла та же проблема, и забудьте о подключиться к SSH на порту, где находится актуальный репозиторий , а не просто в общем SSH-порту, тогда ключ хоста будет другим!

2 голосов
/ 11 июля 2012

Рене, ваша переменная HOME установлена ​​неправильно. Либо измените его на c:\Users\(your-username) или просто на %USERNAME%.

1 голос
/ 16 декабря 2015

Я решил похожую проблему, используя этот обходной путь .

Вам просто нужно переключиться на Embedded Git, нажать, нажать кнопку «Да», а затем вернуться обратно в System Git.

Вы можете найти эту опцию в

Tools -> Options -> Git
1 голос
/ 02 февраля 2015

Просто откройте Putty и попытайтесь установить соединение с удаленным сервером, на который вы хотите отправить свой код. когда появится диалоговое окно, нажмите Да (вы доверяете удаленному), тогда все будет в порядке.

...