Jak skonfigurować klucze SSH na Ubuntu 16.04

wprowadzenie

SSH, lub secure shell, jest szyfrowanym protokołem używanym do administrowania serwerami i komunikacji z nimi. Podczas pracy z serwerem Ubuntu, są szanse, że spędzisz większość czasu w sesji terminalowej połączonej z serwerem przez SSH.

w tym przewodniku skupimy się na konfigurowaniu kluczy SSH dla instalacji vanilla Ubuntu 16.04. Klucze SSH zapewniają łatwy i bezpieczny sposób logowania do serwera i są zalecane dla wszystkich użytkowników.

Krok 1 — Utwórz parę kluczy RSA

pierwszym krokiem jest utworzenie pary kluczy na komputerze klienckim (zwykle na komputerze):

  • ssh-keygen

domyślnie ssh-keygen utworzy 2048-bitową parę kluczy RSA, która jest wystarczająco bezpieczna dla większości przypadków użycia (opcjonalnie można przekaż flagę -b 4096, aby utworzyć większy 4096-bitowy klucz).

Po wprowadzeniu polecenia powinieneś zobaczyć następujące wyjście:

Output
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

naciśnijENTER, aby zapisać parę kluczy do podkatalogu.ssh/ w katalogu domowym lub podaj alternatywną ścieżkę.

jeśli wcześniej wygenerowano parę kluczy SSH, może pojawić się następujący monit:

Output
/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

Jeśli zdecydujesz się zastąpić klucz na dysku, nie będziesz mógł już uwierzytelniać przy użyciu poprzedniego klucza. Bądź bardzo ostrożny wybierając tak, ponieważ jest to destrukcyjny proces, którego nie można odwrócić.

powinieneś zobaczyć następujący wiersz:

Output
Enter passphrase (empty for no passphrase):

tutaj opcjonalnie możesz wprowadzić bezpieczne hasło, co jest wysoce zalecane. Hasło dodaje dodatkową warstwę zabezpieczeń, aby uniemożliwić zalogowanie się nieautoryzowanym użytkownikom. Aby dowiedzieć się więcej o bezpieczeństwie, zapoznaj się z naszym samouczkiem na temat konfiguracji uwierzytelniania opartego na kluczach SSH na serwerze Linux.

powinieneś zobaczyć następujące wyjście:

Output
Your identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+

masz teraz klucz publiczny i prywatny, którego możesz użyć do uwierzytelnienia. Następnym krokiem jest umieszczenie klucza publicznego na serwerze, aby można było zalogować się za pomocą uwierzytelniania opartego na kluczu SSH.

Krok 2 — skopiuj klucz publiczny do serwera Ubuntu

najszybszym sposobem na skopiowanie klucza publicznego do hosta Ubuntu jest użycie narzędzia o nazwiessh-copy-id. Ze względu na swoją prostotę, ta metoda jest wysoce zalecana, jeśli jest dostępna. Jeśli nie masz ssh-copy-id dostępnej na twoim komputerze klienckim, możesz użyć jednej z dwóch alternatywnych metod podanych w tej sekcji (Kopiowanie za pomocą SSH opartego na hasłach lub ręczne kopiowanie klucza).

kopiowanie klucza publicznego za pomocą ssh-copy-id

narzędziessh-copy-id jest domyślnie dołączone do wielu systemów operacyjnych, więc możesz mieć je dostępne w systemie lokalnym. Aby ta metoda działała, musisz mieć już dostęp SSH oparty na hasłach do swojego serwera.

aby korzystać z narzędzia, wystarczy określić zdalny host, z którym chcesz się połączyć, i konto użytkownika, do którego masz dostęp SSH hasłem. Jest to konto, na które zostanie skopiowany Twój publiczny klucz SSH.

składnia jest:

  • ssh-copy-id username@remote_host

Możesz zobaczyć następujący komunikat:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

oznacza to, że twój lokalny komputer nie rozpoznaje zdalnego hosta. Stanie się to przy pierwszym połączeniu z nowym hostem. Wpisz „Tak”i naciśnij ENTER, aby kontynuować.

następnie narzędzie przeskanuje Twoje konto lokalne w poszukiwaniu kluczaid_rsa.pub, który utworzyliśmy wcześniej. Po znalezieniu klucza zostanie wyświetlony monit o podanie hasła do konta użytkownika zdalnego:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new [email protected]'s password:

wpisz hasło (Twoje wpisanie nie zostanie wyświetlone ze względów bezpieczeństwa) i naciśnijENTER. Narzędzie połączy się z kontem na zdalnym hoście za pomocą podanego hasła. Następnie skopiuje zawartość Twojego klucza~/.ssh/id_rsa.pub do pliku w katalogu głównym zdalnego konta~/.ssh o nazwieauthorized_keys.

powinieneś zobaczyć następujące wyjście:

Output
Number of key(s) added: 1Now try logging into the machine, with: "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.

w tym momencie twój kluczid_rsa.pub został przesłany do konta zdalnego. Możesz przejść do kroku 3.

kopiowanie klucza publicznego za pomocą SSH

Jeśli nie masz ssh-copy-id, ale masz dostęp SSH oparty na hasłach do konta na serwerze, możesz przesłać klucze za pomocą konwencjonalnej metody SSH.

możemy to zrobić za pomocą polecenia cat, aby odczytać zawartość publicznego klucza SSH na naszym lokalnym komputerze i przekierować go przez połączenie SSH ze zdalnym serwerem.

z drugiej strony, możemy się upewnić, że katalog ~/.ssh istnieje i ma odpowiednie uprawnienia pod kontem, którego używamy.

możemy następnie wypisać zawartość, którą wrzuciliśmy do pliku o nazwieauthorized_keys w tym katalogu. Użyjemy symbolu przekierowania>>, aby dodać zawartość zamiast ją nadpisywać. To pozwoli nam dodawać klucze bez niszczenia wcześniej dodanych kluczy.

pełne polecenie wygląda tak:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

możesz zobaczyć następujący komunikat:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

oznacza to, że twój lokalny komputer nie rozpoznaje zdalnego hosta. Stanie się to przy pierwszym połączeniu z nowym hostem. Wpisz „Tak”i naciśnij ENTER, aby kontynuować.

następnie powinieneś zostać poproszony o wprowadzenie hasła do zdalnego konta użytkownika:

Output
[email protected]'s password:

Po wprowadzeniu hasła zawartość Twojego kluczaid_rsa.pub zostanie skopiowana na koniec plikuauthorized_keys konta zdalnego użytkownika. Jeśli to się powiodło, przejdź do kroku 3.

ręczne kopiowanie klucza publicznego

Jeśli nie masz dostępu SSH opartego na hasłach do swojego serwera, będziesz musiał wykonać powyższy proces ręcznie.

ręcznie dodamy zawartość Twojego plikuid_rsa.pub do pliku~/.ssh/authorized_keys na Twoim zdalnym komputerze.

aby wyświetlić zawartość kluczaid_rsa.pub, wpisz go w swoim komputerze lokalnym:

  • cat ~/.ssh/id_rsa.pub

zobaczysz zawartość klucza, która powinna wyglądać mniej więcej tak:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Uzyskaj dostęp do zdalnego hosta przy użyciu dowolnej dostępnej metody.

Po uzyskaniu dostępu do konta na zdalnym serwerze, należy upewnić się, że katalog ~/.ssh istnieje. Polecenie to utworzy katalog w razie potrzeby lub nie zrobi nic, jeśli już istnieje:

  • mkdir -p ~/.ssh

teraz możesz utworzyć lub zmodyfikować plik authorized_keys w tym katalogu. Możesz dodać zawartość swojego pliku id_rsa.pub na koniec pliku authorized_keys, tworząc go w razie potrzeby, używając następującego polecenia:

  • echo public_key_string >> ~/.ssh/authorized_keys

w powyższym poleceniu zastąp plik public_key_string za pomocą wyjście z polecenia cat ~/.ssh/id_rsa.pub wykonanego w systemie lokalnym. Powinien zaczynać się od ssh-rsa AAAA....

na koniec upewnimy się, że katalog~/.ssh I plikauthorized_keys mają ustawione odpowiednie uprawnienia:

  • chmod -R go= ~/.ssh

to rekurencyjnie usuwa wszystkie „grupy” i „inne” uprawnienia do katalogu~/.ssh/.

Jeśli używasz konta root do konfigurowania kluczy dla konta użytkownika, ważne jest również, aby Katalog ~/.ssh należał do użytkownika, a nie do root:

  • chown -R sammy:sammy ~/.ssh

w tym tutorialu nasz użytkownik ma na imię Sammy, ale w powyższym poleceniu należy podstawić odpowiednią nazwę użytkownika.

możemy teraz próbować uwierzytelniania bez hasła za pomocą naszego serwera Ubuntu.

Krok 3 — Uwierzytelnij się na Ubuntu Server za pomocą kluczy SSH

Jeśli pomyślnie wykonałeś jedną z powyższych procedur, powinieneś być w stanie zalogować się do zdalnego hosta bez hasła konta zdalnego.

proces podstawowy jest taki sam:

  • ssh username@remote_host

Jeśli po raz pierwszy łączysz się z tym hostem (jeśli użyłeś ostatniej metody powyżej), możesz zobaczyć coś takiego:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

oznacza to, że twój lokalny komputer nie rozpoznaje zdalnego hosta. Wpisz „Tak”, a następnie naciśnij ENTER, aby kontynuować.

Jeśli nie podałeś hasła do swojego klucza prywatnego, zostaniesz natychmiast zalogowany. Jeśli podczas tworzenia klucza podano hasło klucza prywatnego, zostanie wyświetlony monit o jego wprowadzenie (należy pamiętać, że naciśnięcia klawiszy nie będą wyświetlane w sesji terminala dla bezpieczeństwa). Po uwierzytelnieniu należy otworzyć nową sesję powłoki z skonfigurowanym kontem na serwerze Ubuntu.

jeśli uwierzytelnianie oparte na kluczach powiodło się, kontynuuj, aby dowiedzieć się, jak jeszcze bardziej zabezpieczyć system, wyłączając uwierzytelnianie hasłem.

Krok 4 — Wyłącz uwierzytelnianie hasłem na serwerze

jeśli udało Ci się zalogować na swoje konto za pomocą SSH bez hasła, pomyślnie skonfigurowałeś uwierzytelnianie oparte na kluczach SSH na swoim koncie. Jednak mechanizm uwierzytelniania oparty na Hasle jest nadal aktywny, co oznacza, że serwer jest nadal narażony na ataki brute-force.

przed wykonaniem czynności opisanych w tej sekcji upewnij się, że masz skonfigurowane uwierzytelnianie oparte na kluczach SSH dla konta root na tym serwerze lub, najlepiej, że masz skonfigurowane uwierzytelnianie oparte na kluczach SSH dla konta innego niż root na tym serwerze z uprawnieniami sudo. Ten krok spowoduje zablokowanie logowania opartego na hasłach, więc zapewnienie, że nadal będziesz mógł uzyskać dostęp administracyjny, ma kluczowe znaczenie.

Po potwierdzeniu, że Twoje zdalne konto ma uprawnienia administracyjne, Zaloguj się do zdalnego serwera za pomocą kluczy SSH, jako root lub za pomocą konta z uprawnieniami sudo. Następnie otwórz plik konfiguracyjny demona SSH:

  • sudo nano /etc/ssh/sshd_config

wewnątrz pliku wyszukaj dyrektywę o nazwiePasswordAuthentication. Można to skomentować. Odkomentuj linię I ustaw wartość na „nie”. Spowoduje to wyłączenie możliwości logowania się przez SSH przy użyciu haseł do konta:

/etc/ssh/sshd_config
...PasswordAuthentication no...

Zapisz i zamknij plik po zakończeniu, naciskając CTRLX, a następnie Y, aby potwierdzić zapisanie pliku, i wreszcie ENTER, aby zakończyć nano. Aby faktycznie wprowadzić te zmiany, musimy ponownie uruchomić usługęsshd:

  • sudo systemctl restart ssh

jako środek ostrożności, otwórz nowe okno terminala i sprawdź, czy usługa SSH działa poprawnie przed zamknięciem tej sesji:

  • ssh username@remote_host

po zweryfikowaniu usługi SSH możesz bezpiecznie zamknąć wszystkie bieżące sesje serwera.

Demon SSH na Twoim serwerze Ubuntu reaguje teraz tylko na klucze SSH. Uwierzytelnianie oparte na Hasle zostało pomyślnie wyłączone.

wniosek

powinieneś mieć teraz skonfigurowane uwierzytelnianie oparte na kluczu SSH na serwerze, co pozwala zalogować się bez podawania hasła do konta.

Jeśli chcesz dowiedzieć się więcej o pracy z SSH, zapoznaj się z naszym Przewodnikiem SSH Essentials.



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.