Czytam o konfigurowaniu kluczy ssh w Linuksie i mam kilka pytań. Popraw mnie, jeśli się mylę…
Powiedzmy, że host tr-lgto chce połączyć się z hostem tr-mdm za pomocą ssh. Jeśli chcemy mieć pewność, że to prawdziwy tr-mdm, generujemy parę kluczy na tr-mdm i dodajemy klucz publiczny do known_hosts
na tr-lgto. Jeśli tr-mdm chce sprawdzić, czy to jest prawdziwe tr-lgto, to tr-lgto musi wygenerować parę kluczy i dodać klucz publiczny do authorized_keys
tr-mdm.
Pytanie 1 : W pliku znane_hosty nie ma pola użytkownika , tylko adresy IP i nazwy hostów. tr-mdm może mieć wielu użytkowników, każdy z własnym .ssh
folderem. Czy powinniśmy dodać klucz publiczny do każdego z known_hosts
plików?
Pytanie 2 : Odkryłem, że ssh-keyscan -t rsa tr-mdm
zwróci klucz publiczny tr-mdm. Skąd mam wiedzieć, do którego użytkownika należy ten klucz? Ponadto klucz publiczny w /root/.ssh/
różni się od tego, co zwraca to polecenie. Jak to może być?
źródło
Odpowiedzi:
Mieszasz uwierzytelnianie komputera serwera z komputerem klienta i uwierzytelnianie użytkownika na komputerze serwera.
Uwierzytelnianie serwera
Jedną z pierwszych rzeczy, które mają miejsce podczas nawiązywania połączenia SSH, jest to, że serwer wysyła swój klucz publiczny do klienta i udowadnia (dzięki kryptografii klucza publicznego ) klientowi, że zna powiązany klucz prywatny. Uwierzytelnia to serwer: jeśli ta część protokołu się powiedzie, klient wie, że serwer jest tym, za kogo się podaje.
Klient może sprawdzić, czy serwer jest znany, a nie jakiś nieuczciwy serwer próbujący podać go jako właściwy. SSH zapewnia jedynie prosty mechanizm weryfikacji legalności serwera: zapamiętuje serwery, z którymi już się łączyłeś, w
~/.ssh/known_hosts
pliku na komputerze klienta (istnieje również plik ogólnosystemowy/etc/ssh/known_hosts
). Przy pierwszym połączeniu z serwerem musisz sprawdzić w inny sposób, czy klucz publiczny przedstawiony przez serwer jest tak naprawdę kluczem publicznym serwera, z którym chcesz się połączyć. Jeśli masz klucz publiczny serwera, z którym chcesz się połączyć, możesz~/.ssh/known_hosts
ręcznie dodać go do klienta.Uwierzytelnienie serwera należy wykonać przed wysłaniem do niego poufnych danych. W szczególności, jeśli uwierzytelnienie użytkownika wymaga hasła, hasła nie można przesyłać do nieuwierzytelnionego serwera.
Uwierzytelnianie użytkownika
Serwer pozwala zdalnemu użytkownikowi zalogować się tylko wtedy, gdy ten użytkownik może udowodnić, że ma prawo dostępu do tego konta. W zależności od konfiguracji serwera i wyboru użytkownika użytkownik może przedstawić jedną z kilku form poświadczeń (poniższa lista nie jest wyczerpująca).
~/.ssh/authorized_keys
na serwerze).źródło
Moi przyjaciele dali mi odpowiedź. Domyślnie klucz identyfikuje maszynę, a nie użytkownika. Więc klucze są przechowywane w / etc / ssh /. Właśnie dlatego dostałem inny klucz niż ten przechowywany w /root/.ssh
źródło