Próbuję utworzyć repozytorium git na moim hoście internetowym i sklonować je na moim komputerze. Oto co zrobiłem:
- Utworzyłem repozytorium na zdalnym serwerze.
- I wygenerował parę kluczy:
ssh-keygen -t dsa
. - Dodałem mój klucz do ssh-agent.
- Skopiowałem na serwer klucz publiczny w formacie
~/.ssh
.
A potem po próbie uruchomienia polecenia wyskakuje git clone ssh://user@host/path-to-repository
mi błąd:
Nie można negocjować z XX.XXX.XX.XX: nie znaleziono zgodnego typu klucza hosta. Ich oferta: ssh-dss
fatal: Nie można odczytać ze zdalnego repozytorium.
Upewnij się, że masz odpowiednie prawa dostępu i repozytorium istnieje.
Co to znaczy?
ssh
web-hosting
Nikita Gorshkov
źródło
źródło
Odpowiedzi:
Najnowsza wersja openssh domyślnie wycofała klucze DSA. Powinieneś zasugerować swojemu dostawcy GIT dodanie rozsądnego klucza hosta. Poleganie wyłącznie na DSA nie jest dobrym pomysłem.
Aby obejść ten problem, musisz podać plik
ssh
klientowi, że chcesz akceptować klucze hosta DSA, zgodnie z opisem w oficjalnej dokumentacji użytkowania starszego typu . Masz kilka możliwości, ale radzę dodać te linie do swojego~/.ssh/config
pliku:Inną możliwością jest użycie zmiennej środowiskowej
GIT_SSH
do określenia tych opcji:źródło
HostkeyAlgorithms +ssh-dss
. Dzięki.Możesz również dodać
-oHostKeyAlgorithms=+ssh-dss
w swoim wierszu ssh:źródło
U mnie to zadziałało: (dodane do
.ssh\config
)źródło
yuor-host
to host, z którym walczyszssh
. Ustawienie niebezpiecznych ustawień domyślnych dla wszystkich hostów jest zawsze złym pomysłem.Jeśli jesteś podobny do mnie i wolisz nie tworzyć tego systemu luk w zabezpieczeniach lub całego użytkownika, możesz dodać opcję konfiguracji do dowolnego repozytorium git, które tego potrzebuje, uruchamiając to polecenie w tych repozytoriach. (uwaga działa tylko z wersją git> = 2.10, wydana 04.09.2016)
Działa to jednak tylko po skonfigurowaniu repozytorium. Jeśli nie czujesz się komfortowo, dodając pilota ręcznie (i po prostu chcesz sklonować), możesz uruchomić klon w następujący sposób:
następnie uruchom pierwsze polecenie, aby stało się trwałe.
Jeśli nie masz najnowszej wersji, a nadal chciałbyś, aby dziura była jak najbardziej lokalna, polecam wprowadzenie
powiedzmy w jakimś pliku
git_ssh_allow_dsa_keys.sh
isource
wstawiam go w razie potrzeby.źródło
Chcę trochę współpracować z rozwiązaniem po stronie serwera. Tak więc serwer twierdzi, że nie obsługuje DSA, ponieważ klient openssh nie aktywuje go domyślnie :
Aby to naprawić po stronie serwera, powinienem aktywować inne algorytmy klucza, takie jak RSA lub ECDSA. Właśnie miałem ten problem z serwerem w sieci LAN. Proponuję co następuje:
Zaktualizuj openssh:
Scal nowe konfiguracje w sshd_config, jeśli istnieje sshd_config.rpmnew.
Sprawdź, czy w / etc / ssh / są klucze hostów. Jeśli nie, wygeneruj nowe, zobacz
man ssh-keygen
.Sprawdź w / etc / ssh / sshd_config konfigurację HostKey. Powinien umożliwiać konfigurację RSA i ECDSA. (Jeśli wszystkie z nich są domyślnie komentowane, pozwoli to również na RSA, zobacz w
man sshd_config
części HostKey).Po stronie klienta utwórz klucz dla ssh (nie DSA, jak w pytaniu), wykonując po prostu następujące czynności:
Po tym, ponieważ jest więcej opcji niż ssh-dss (DSA), klient openssh (> = v7) powinien łączyć się z algorytmem RSA lub lepszym.
Tutaj kolejny dobry artykuł.
To jest moje pierwsze pytanie, na które odpowiedziano, przyjmuję sugestie: D.
źródło
Jak można określić wiele algorytmów? Pytam, ponieważ właśnie zaktualizowałem git na moim laptopie roboczym (Windows 10, używając oficjalnej kompilacji Git dla systemu Windows) i otrzymałem ten błąd, gdy próbowałem przekazać gałąź projektu do mojego pilota Azure DevOps. Próbowałem push --set-upstream i otrzymałem to:
Jak więc wdrożyć powyższe sugestie, uwzględniając obie te możliwości? (Jako szybki sposób na zrobienie tego, użyłem rozwiązania @ golvok z group14 i zadziałało, ale naprawdę nie wiem, czy 1 czy 14 jest lepsze itd.)
źródło
Możesz postępować zgodnie z powyższym podejściem lub tym
Utwórz plik konfiguracyjny w katalogu .ssh i dodaj te linie.
źródło