Próbuję skonfigurować SSH bez hasła na serwerze Ubuntu ssh-copy-id myuser@myserver
, ale pojawia się błąd:
Ostrzeżenie: klucz hosta ECDSA dla „myserver” różni się od klucza dla adresu IP „192.168.1.123”
Co to powoduje i jak to naprawić? Próbowałem usunąć .ssh
katalog na komputerze zdalnym i uruchomić ssh-keygen -R "myserver"
lokalnie, ale to nie rozwiązuje błędu.
ssh
security
ubuntu-server
ssh-keys
Cerin
źródło
źródło
The ECDSA host key for server has changed
. Moim sposobem jest usunięcie powiązanego ciągu pamięci podręcznej o domenie w~/.ssh/known_hosts
. Następnie działa ssh.Odpowiedzi:
Usuń buforowany klucz dla
192.168.1.123
komputera lokalnego:źródło
ssh-keyscan -t ecdsa my.server.domain >> ~/.ssh/known_hosts
później, że nie musisz weryfikować nowego klucza przy pierwszym połączeniu z hostem.W moim przypadku
ssh-keygen -R ...
nie naprawiłem ostrzeżenia. Miałem dodatkowe informacje takie jak to:Po prostu ręcznie zmodyfikowałem
~/.ssh/known_hosts
i usunąłem wiersz 8 („klucz obrażający”). Próbowałem połączyć się ponownie, host został dodany na stałe, a potem wszystko było w porządku!źródło
sed -e '8d' /home/myuser/.ssh/known_hosts
, zastępując numer wiersza8
i nazwę pliku tymi, które są wyświetlane w systemie.known_hosts:8
odnosi się do wartości o indeksie zerowym, czy nie. Dobrze wiedzieć, że jest to mapowanie 1: 1 ...ssh-keygen -R [hostname]:2022
Robię dużo sshing między moimi komputerami LAN i moimi dwoma kontami hostingowymi, więc uporządkowałem wszelkiego rodzaju szanse i kończy się na SSH, w tym problemy z uwierzytelnianiem,
ssh -v
aby zobaczyć, gdzie i co poszło źle.Właśnie rozwiązałem ten problem i nie jestem zadowolony z odpowiedzi, chciałem naprawdę wiedzieć, „dlaczego” sam…
Wyzwalaczem w moim przypadku jest: zainstalowany nowy system operacyjny serwera w pracy, a po zainstalowaniu pakietu openssh-server na serwerze roboczym wygenerowano nowy zestaw kluczy hosta. Wcześniej wszystkie moje systemy operacyjne serwera były Ubuntu i tym razem zmieniły się na Debian (i podejrzewam, że istnieje niuansowa różnica w uprawnieniach).
Kiedy wszystkie systemy operacyjne były Ubuntu i ponownie instaluję system operacyjny serwera, po pierwszym SSH dostaję tego rodzaju ostrzeżenie, które wolę niż ciche ostrzeżenie powyżej!
Następnie otwieram się ~/.ssh/known_hostsna komputerze inicjując ssh, usuwam ten wiersz, ponownie się łączy i tak się dzieje:
Ten kawałek około: 11122 to numer portu, z którego kieruję SSH na zaporze
Sprawdziłem kopie zapasowe z poprzedniego serwera Ubuntu i różniłem się od mojej nowej instalacji Debian:
Więc tak, prawdopodobnie host zaczął ostatnio używać kluczy ecdsa, co w oparciu o zmiany Ubuntu ostatnio, winiłbym za aktualizację. Odejście Ubuntu od solidnego systemu Linux, na który liczyłem, spowodowało, że tym razem zainstalowałem Debiana.
Przeczytałem q.a security.SE na ecdsa i już usunąłem ten wiersz z
sshd_config
mojego nowego serwera Debian. (i pobiegłservice ssh restart
)źródło
ubuntu debian server
a zobaczysz, co mam na myśli.Monit pojawia się za każdym razem, ponieważ adresy IP zmieniają się cały czas podczas korzystania z dynamicznego adresowania. Spróbuj użyć statycznego adresu IP, aby klucz mógł zostać dodany tylko raz.
źródło
ssh-keygen -f "/root/.ssh/known_hosts" -R 192.168.1.123
Powinno to zastąpić istniejące klucze w pliku znane_hosty.old i utworzyć nowy. To rozwiązanie działało dla mnie w tym samym scenariuszu
źródło
Dodałem następujące wiersze do mojego ~ / .ssh / config, wyłączając w ten sposób ścisłe sprawdzanie hosta dla wszystkich adresów lokalnych. (przy przydzielaniu adresów DHCP adresy IP moich komputerów lokalnych zawsze się zmieniają)
Nadal jednak pojawia się ostrzeżenie, które jest dla mnie w porządku.
źródło
Czy używasz tego samego użytkownika do łączenia?
Jeśli jesteś zalogowany na lokalnym komputerze, takim jak użytkownik John i podłączony do serwera B, jak użytkownik Adolf @ B i wszystko jest w porządku, nie oznacza to, że wszystko jest w porządku, jeśli jesteś zalogowany na lokalnym komputerze, takim jak użytkownik Jane i łączysz się z serwerem B jak użytkownik Adolf @ B .
Jeśli chcesz zalogować się na serwerze B jako użytkownik Beda z komputera A bez hasła, wypróbuj to polecenie, wszystko z komputera A :
To polecenie generuje klucz i zapisuje klucz w pliku. Proszę pozostawić puste hasło .
To polecenie tworzy katalog, jeśli jeszcze nie istnieje. W przeciwnym razie nie drukuj komunikatu o błędzie.
To polecenie zmienia katalog na katalog domowy użytkowników ./ssh.
To polecenie drukuje plik id_rsa.pub (twój klucz publiczny) w uprawnione klucze na serwerze.
WAŻNE: Beda to nazwa użytkownika na serwerze, z którym się łączysz, B to adres IP twojego serwera.
Teraz możesz połączyć się z serwerem B bez hasła lub hasła:
źródło
Wątek tutaj może pomóc.
Zasadniczo chcesz usunąć zarówno klucze RSA, jak i ECDSA dla tego hosta, a następnie użyj ich,
ssh-keyscan
aby umieścić je z powrotem wknown_hosts
pliku w sposób, który nie spowoduje konfliktu. To działało dla mnie, gdy miałem ten sam problem.źródło
Pytanie: Co to powoduje ...?
Tak więc zmienił się klucz hosta serwera ssh. Co spowodowało zmianę? Trudno powiedzieć. Oto kilka domysłów:
Pytanie: ... i jak to naprawić?
Jak już inni odpowiedzieli, usuń buforowany klucz hosta ECDSA dla mojego serwera, który jest buforowany na koncie.
źródło
Ten błąd denerwował mnie przez długi czas. Z jakiegoś powodu miało to znaczenie, czy zrobiłbym to
lub
https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
następnie wskazał mi opcję zmiany pliku konfiguracyjnego. Zobacz mój skrypt https://askubuntu.com/a/949731/129227 tam do automatyzacji procesu.
źródło
CanonicalizeHostname
iCanonicalDomains
pozwoliłoby uniknąć usuwania ścisłą kontrolę i może sprawić ssh rozważyć hosta i host.domain być takie same.Naprawiłem to na Chromebooku, odinstalowując i ponownie instalując Secure Shell ... To działało jak urok.
źródło
Oto jak usunąć znany odcisk palca hosta (z
known_hosts
pliku) w systemie operacyjnym Chrome:Znajdź indeks niepoprawnego wpisu hosta na wyjściu ssh, gdy połączenie się nie powiedzie. Na przykład w poniższym wierszu indeks obrażeń to 7 :
Otwórz konsolę JavaScript ( CTRL+ Shift+ J) okna Bezpiecznej powłoki i wpisz następujące, zastępując
INDEX
odpowiednią wartością (np. 7 ):To rozwiązanie zostało zapożyczone z bloga Leo Gaggl .
źródło