Próbuję wypchnąć zmiany z lokalnego repozytorium do zdalnego repozytorium. Kiedy piszę:
git push origin
Otrzymuję następujący błąd:
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
Jak mogę to rozwiązać? Używam git z wiersza poleceń w systemie Windows 7.
Edytować
Kiedy próbuję wykonać proste ssh
ssh user@hostname
Otrzymuję następujący błąd:
Could not create directory '/c//%HOMEDRIVE%%HOMEPATH%/.ssh'.
percent_expand: unknown key %H
W jakiś sposób nie utworzy katalogu, ponieważ ścieżka jest nieprawidłowa. Jak to naprawić?
@eckes: Edit2
Mój dom jest ustawiony na, %HOMEDRIVE%%HOMEPATH%
czy to prawda?
$HOME
to, że nie jest poprawnie skonfigurowany. Spróbuj ustawićHOME
zmienną środowiskową w systemie Windows za pomocąMy Computer
-> kliknięcie prawym przyciskiem myszy ->Properties
-> TabAdvanced
-> PrzyciskEnvironment Variables
/c//
(prawdopodobnie liście dysku) nadal masz%HOMEDRIVE%
... Możesz zaoszczędzić trochę czasu, bawiąc się wartością i powtarzając ją?HOMEDRIVE
iHOMEPATH
ustawHOME
na wynikową wartość ...Odpowiedzi:
Komunikat oznacza, że w
origin
pliku zaufanych hostów nie ma klucza hosta .Aby obejść ten problem, otwórz zwykłe połączenie SSH do,
origin
a SSH zapyta Cię, czy chcesz ufać zdalnemu hostowi (z konsoli Git):Jeśli ufasz zdalnemu hostowi (tj. Typowi
yes
), SSH doda swój klucz do listy znanych hostów.Po tym powinieneś być w stanie zrobić swój
git push origin
.Alternatywnie, możesz również ręcznie dodać klucz
origin
do,.ssh/known_hosts
ale wymaga to przestrzegania formatuknown_hosts
pliku, jak opisano na stronie podręcznika podręcznikasshd
(Sekcja AUTHORIZED_KEYS FORMAT PLIKU ).źródło
known_hosts
pliku.Dla tych z Was, którzy konfigurują MSYS Git w systemie Windows za pomocą PuTTY za pomocą standardowego wiersza poleceń, sposobem na dodanie hosta do pamięci podręcznej PuTTY jest uruchomienie
Na przykład:
Po prostu odpowiedz
y
, a następnie Ctrl + C reszta.Sprawdź jednak odcisk palca. To ostrzeżenie istnieje nie bez powodu. Odciski palców dla niektórych usług git (edytuj, aby dodać więcej):
16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
7e:af:8d:ec:f0:39:5e:ba:52:16:ce:19:fa:d4:b8:7d
źródło
plink
uruchamiając$ set | grep GIT_SSH
i sprawdzającGIT_SSH='C:\Program Files (x86)\PuTTY\plink.exe'
-P
wybrać port, takich jak:plink.exe example.com -P 2222
. Udało mi się sklonować z github, ale nie z mojego osobistego serwera, co bez końca mnie zdezorientowało.Spróbuj wykonać polecenie „set | grep -i ssh” z zachęty Git Bash
Jeśli twoja konfiguracja jest taka jak moja, prawdopodobnie masz te zestawy:
zrobiłem
i po tym zadziałało, .. myślę, że putty zapisuje swoje klucze gdzie indziej jako $ HOME / .ssh czy coś takiego ... (miałem też problem z pudełkiem, w którym $ HOME było ustawione na "C: \ Users \ usrnam "zamiast" / C / Users / usrnam / "
w każdym razie Twój przebieg może się różnić, ale to rozwiązało problem. :-)
(chyba wystarczy zrobić nieustawiony GIT_SSH, ale byłem na fali)
Uwaga: jeśli brak ustawienia nie działa dla Ciebie, spróbuj tego:
źródło
unset GIT_SSH
dla mnie też zadziałało, chociaż muszę to robić za każdym razem, gdy uruchamiam git bash, co jest dość nudne. Masz pomysł, jak to zautomatyzować?Podejrzewam, że twoja
GIT_SSH
zmienna środowiskowa jest ustawiona na%ProgramFiles(x86)%\putty\plink.exe
. Z jakiegoś powodu PLink nie używa.ssh/known_hosts
pliku w katalogu użytkownika do przechowywania kluczy hostów zdalnych.Jeśli tak jest w rzeczywistości, a może to być celowe, jeśli chcesz korzystać z konkursu, musisz najpierw użyć PLink, aby połączyć się z hostem.
Powinieneś dostać podobną wiadomość
Po udzieleniu odpowiedzi
y
na pytanie i pomyślnym połączeniu ze zdalnym hostem wszystko powinno być gotowe. Śmiało i spróbuj ponownie.źródło
"$GIT_SSH" -P 7999 [email protected]
Samo połączenie się z hostem nie wystarczy, przynajmniej w systemie Windows. To dodaje klucz hosta,
ssh/known_hosts
ale błąd nadal występuje.Musisz zamknąć okno git bash i otworzyć nowe. Następnie pamięć podręczna rejestru jest czyszczona i funkcja push / pull działa.
źródło
ssh/known_hosts
jest relatywny do czego ?,% USERPROFILE% Mam ten problem w Win 7 i nie ma rozwiązania ...Rene, twoja
HOME
zmienna nie jest ustawiona poprawnie. Albo zmień to nac:\Users\(your-username)
lub po prostu na%USERNAME%
.źródło
Rozwiązanie z Plink
Zapisz ten skrypt Pythona w
known_hosts.py
:Testowane na Win7x64 i Pythonie 2.7 .
Następnie uruchomić:
I wybierz import do rejestru. Keyscan pobierze klucz publiczny dla domeny (miałem problemy z bitbucketem), a następnie skrypt Pythona przekonwertuje go do formatu Plink.
źródło
Miałem ten sam problem i zapomniałem połączyć się z SSH na porcie, na którym znajduje się rzeczywiste repozytorium , a nie tylko ogólny port SSH, wtedy klucz hosta jest inny!
źródło
Po prostu otwórz Putty i spróbuj nawiązać połączenie ze zdalnym serwerem, z którego chcesz przesłać swój kod. kiedy pojawi się okno dialogowe, naciśnij Tak (ufasz pilotowi), a wszystko będzie w porządku.
źródło
Środowisko pracy:
Po pierwsze: Usuń putty known_hosts w rejestrze zgodnie z Regedit.
Następnie: Wykonanie polecenia
%GIT_SSH% user@hostname
w cmd systemu Windows rozwiązuje problem.Mam nadzieję, że to pomoże wam wszystkim.
źródło
Ja również miałem ten sam problem, gdy próbowałem sklonować repozytorium na moim komputerze z systemem Windows 7. Wypróbowałem większość wymienionych tutaj odpowiedzi. Żaden z nich nie pracował dla mnie.
U mnie zadziałało uruchomienie programu Pageant (agent uwierzytelniający Putty). Gdy Pageant działał w tle, mogłem klonować, przesyłać i ściągać z / do repozytorium. To zadziałało dla mnie, być może dlatego, że skonfigurowałem mój klucz publiczny w taki sposób, że za każdym razem, gdy jest używany po raz pierwszy, wymagane jest hasło i uruchamia się Pageant.
źródło
Connection abandoned
, ale coś w rodzajuAccess denied (private key)
Zmiana z PuTTY na OpenSSH rozwiązała ten problem bez konieczności wyłączania GIT_SSH itp.
źródło
Rozwiązałem podobny problem, korzystając z tego obejścia .
Wystarczy przełączyć się na Embedded Git, nacisnąć, nacisnąć przycisk Yes, a następnie przełączyć się z powrotem na System Git.
Możesz znaleźć tę opcję w
źródło
C:\Users\{UserName}\AppData\Local\SourceTree\app-2.5.5\tools\putty> .\plink.exe {YourNewHost}
Jak odpowiedział Roman Starkov ,
plink
musi dodać hosta do swojej pamięci podręcznej.Dla osób korzystających z rozszerzeń Git :
(zastąp rzeczywistymi ścieżkami)
na przykład
Uwaga : upewnij się, że używasz tego samego plink / klink, którego używają rozszerzenia Git!
źródło
Dodanie hosta bezpośrednio za pomocą Bash nie rozwiązało problemu, błąd nadal występował podczas używania funkcji „Pobierz wszystko” w rozszerzeniach Git. Używając opcji „Pull” w jednej gałęzi, wymagany host został dodany automatycznie przez rozszerzenia Git z wyskakującym ekranem Bash. Po wykonaniu tej czynności mogłem ponownie użyć funkcji „Pobierz wszystko”. Nie jestem pewien, co inaczej robią rozszerzenia Git.
źródło
Wypróbowałem wszystkie powyższe metody, ale żadna z nich nie mogła naprawić tego samego problemu na moim laptopie. W końcu zamiast wypychać gałąź do początku w git bash, skracam, aby użyć opcji wypychania TortoiseGit, aby wykonać wypychanie, a następnie wyskakuje okno z prośbą o dodanie nowego klucza hosta do pamięci podręcznej, po kliknięciu przycisku tak wszystko idzie teraz dobrze.
Mam nadzieję, że to wam wszystkim pomoże.
źródło
Zmieniłem dysk twardy, zainstalowałem Windows. Podczas próby przesłania plików otrzymałem to okno poleceń.
Nacisnąłem "y", potem Ctrl + C. Otworzyłem
putty.exe
, dodałem stary klawisz, wróciłem do gita i wrzuciłem pliki.źródło
Po prostu odinstaluj rozszerzenia Git i zainstaluj ponownie, wybierając OpenSSH zamiast
źródło
W systemie Windows 7 lub 10 sztuczka, która zadziałała, polega na usunięciu zmiennej systemowej GIT_SSH. Wcześniej był ustawiony do używania Plink, a teraz został zastąpiony przez Putty. To było przyczyną błędu Plink.exe
Była też stara instalacja Gita (wersja 32-bitowa) i aktualizacja do Git (np. Git-2.20.1-64-bit.exe), ponieważ na PC był 64-bitowy system operacyjny.
W każdym razie Putty / Plink nie był nawet używany przez Git, ponieważ w instalacji Git domyślnie używano Open SSH.
źródło
Jeśli otrzymasz komunikat o nierozpoznanym kluczu hosta podczas wykonywania operacji git push / pull przy użyciu ATLASSIAN SOURCETREE, nie masz możliwości odpowiedzi t / n, a operacja push / pull zostanie przerwana bez buforowania klucza. Jednak przejście do SourceTree Tools-> Options (zakładka General) i zmiana klienta SSH w (w sekcji SSH Client Configuration) z PuTTY na OpenSSH pozwoli na buforowanie klucza bez zmiany czegokolwiek innego.
źródło