Jak przy pierwszym dostępie do serwera mogę zmusić SSH do przekazania mi klucza RSA i automatycznego zapisania go, jeśli użytkownik wyrazi zgodę?
Obecnie oferuje mi klucz ECDSA. Ponieważ znam już klucz RSA, wolałbym zobaczyć klucz RSA przedstawiony w tym miejscu.
Próbowałem:
ssh -o RSAAuthentication=yes user@server
Niestety daje mi to klucz ECDSA i Are you sure you want to continue connecting (yes/no)?
komunikat.
Odpowiedzi:
Usuwając algorytmy ECDSA ze
HostKeyAlgorithms
zmiennej konfiguracyjnej.Po prostu usunąłem wszystkie algorytmy ECDSA z domyślnej listy .
Możesz oczywiście umieścić to w swoim
.ssh/config
komputerze:źródło
HostKeyAlgorithms [email protected],ssh-rsa
zamiast tego.Nie używaj RSA, ponieważ ECDSA jest nową wartością domyślną.
Na serwerze zrób to:
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
i zapisz ten numer.Na kliencie możesz połączyć się z hostem SSH, a jeśli zobaczysz ten sam numer, możesz odpowiedzieć
Are you sure you want to continue connecting (yes/no)?
twierdząco. Następnie klucz ECDSA zostanie zapisany na kliencie do wykorzystania w przyszłości.źródło
Tak, OK wkrótce przełącz się na ECDSA, ale w międzyczasie spróbuj tego:
źródło
FingerprintHash
opcja jest niepotrzebna, po prostu zostaw całą tę część wyłączoną.Właśnie dodałem tę linię
do
i działa dobrze w tej wersji.
źródło
Aby poprawić odpowiedź tumbleweed, która zawiera martwy link do znalezienia starej listy algorytmów.
Najpierw zdecyduj o liście algorytmów. Aby znaleźć starą listę, użyj
ssh -vv
:I poszukaj 2 wierszy, takich jak „algorytmy klucza hosta: ...”, gdzie pierwsza wydaje się być ofertą serwera, a druga jest ofertą klienta. Lub, aby automatycznie wybrać te 2 linie, spróbuj tego (i aby wyjść, naciśnij Ctrl + D):
Teraz odfiltruj to ... powinieneś usunąć wszystkie dss / dsa, ponieważ są one już przestarzałe, a także chciałeś usunąć ecdsa (tak jak ja), więc na przykład, jeśli:
Powinieneś skończyć z:
Teraz edytuj konfigurację. Dla własnej konfiguracji:
W przypadku konfiguracji ogólnosystemowej:
Dodaj nową linię globalnie:
lub dla konkretnego hosta (nie idealny do konfiguracji całego serwera):
Zamiast listy, którą
ssh -vv
wpisałem , wklej listę uzyskaną z danych wyjściowych, nie włączając części „algorytmy klucza hosta:”.źródło
niektóre punkty są mylące, ponieważ możliwe jest usunięcie algorytmów kluczy z istniejących wartości domyślnych - Kluczami najwyższego poziomu są nowe klucze RSA-sha2 / 256/512 i ed25519 dla najlepszego bezpieczeństwa za pomocą ssh-keygen -t ras -a -b 4096 -a 113 do gen. Obsługa starszych wersji najwyraźniej czyta wiadomości ssh, że ssh1 zniknie całkowicie - jego 45-bitowe i 96-bitowe maks. Klucze dsa również przestarzałe zostały wyeliminowane. Naprawiono na 128/1024 bit max, który można zhakować. (możliwe, że NSA to zrobiła i kiepski / usprawiedliwiony, ponieważ kod debugowania pozostawiał bardzo wątpliwości, że nazewnictwo go zabrzmiało serdecznie), więc wszystkie płatne, bezpieczne struktury klucza RSA muszą zostać przerobione, aby wspierać i utrzymywać wyższe standardy w przyszłości. ustaw, jakich kluczy chcesz używać, jak opisano w / etc / ssh / sshd_config, spróbuj też zrobić 2-kluczowy auth 3 klucz też działa, np .: sshd_config "AuthenticationMethods publickey, publickey, publickey" - upewnij się, że ssh -Q kex pasuje do obu serwerów A i B lub komputerów stacjonarnych, ponieważ na przykład można zrobić różnicę na ich danych wyjściowych - i upewnij się, że te same algorytmy kluczowania exhng są zgodne. Kluczami ecdsa nowszymi w produkcji są również słabe kino, których nie należy używać. lub get - keyexchange odmówił bezpiecznego dostępu częściowego. Wiele dobrych infoz tylko cierpliwych do przeszukania.
źródło
Lub jeśli nalegasz na stosowanie klucza RSA, możesz wpisać
ssh-keygen -t rsa
na serwerze, do którego zamierzasz SSH.Powinno to generować klucze publiczne i prywatne RSA pod „~ / .ssh / id_rsa”. Teraz wystarczy skopiować klucz publiczny
$HOME/.ssh/authorized_keys
na wszystkich komputerach, z których zamierzasz ssh na maszynę, na której wygenerowałeś klucze RSA.A potem usiądź i zrelaksuj się!
źródło