ssh key logo

Klucze SSH mogą służyć jako sposób identyfikacji siebie wobec serwera SSH przy użyciu kryptografii opartej na kluczach publicznych oraz uwierzytelniania z wyzwaniem i odpowiedzią. Główną zaletą uwierzytelniania opartego na kluczach jest to, że w przeciwieństwie do uwierzytelniania hasłem, nie podatne jest na ataki brute-force, i nie ujawniasz prawidłowych danych uwierzytelniających, jeśli serwer został naruszony.

Ponadto uwierzytelnianie za pomocą kluczy SSH może być bardziej wygodne niż tradycyjne uwierzytelnianie hasłem. Kiedy jest używane z programem znanym jako agent SSH, klucze SSH umożliwiają połączenie się z serwerem lub wieloma serwerami, bez konieczności zapamiętywania lub wprowadzania hasła dla każdego systemu.

Uwierzytelnianie oparte na kluczach ma swoje wady i może nie być odpowiednie dla wszystkich środowisk, ale w wielu przypadkach może oferować wiele korzyści. Ogólne zrozumienie, jak działają klucze SSH, pomoże Ci zdecydować, jak i kiedy ich używać, aby sprostać Twoim potrzebom.

W tym przewodniku skonfigurujemy klucze SSH dla systemu CentOS 7.

Generuj parę kluczy

  • Otwórz Terminal
# ssh-keygen
Podaj nazwę pliku, w którym ma być zapisany klucz (/home/<username>/.ssh/id_rsa):  
Podaj hasło (empty for no passphrase):
Wprowadź ponownie to samo hasło:
woja tożsamość została zapisana w /home/<username>/.ssh/id_rsa. 
Twój klucz publiczny został zapisany w /home/<username>/.ssh/id_rsa.pub.
Odcisk klucza to: SHA256:gGJtSsV8BM+7w018d39Ji57F8iO6c0N2GZq3/RY2NhI 
username@hostname 
Obraz losowy klucza:
+---[RSA 3072]----+
|       ooo.                 |
|        oo+.                |
|      + +.+                 |
| o  +       +         E .  |
|      .       . S  .   . =.o|
|    .  +   .    .   B+@o|
|        +   .      oo*=O|
|                .   . .+=o+|
|                  o=ooo+|
+---- [SHA256] -----+

Masz teraz klucz publiczny i prywatny, które możesz używać do uwierzytelniania. Następnym krokiem jest umieszczenie klucza publicznego na serwerze, aby móc korzystać z uwierzytelniania opartego na kluczach SSH do logowania się.

Prześlij swój klucz publiczny

Istnieje kilka różnych sposobów na przesłanie klucza publicznego

1. Za pomocą polecenia ssh-copy-id

ssh-copy-id  jest narzędziem dostępnym na niektórych systemach operacyjnych, które może skopiować klucz publiczny SSH na zdalny serwer za pośrednictwem protokołu SSH.

# ssh-copy-id username@remote_host

/usr/bin/ssh-copy-id: INFO: Źródło klucza(y), które mają być zainstalowane „/home/your_username/.ssh/id_rsa.pub”
/usr/bin/ssh-copy-id: INFO: próba zalogowania się przy użyciu nowego klucza(y), aby wykluczyć te, które są już zainstalowane
/usr/bin/ssh-copy-id: INFO: Pozostały 1 klucz(e) do zainstalowania — jeśli teraz otrzymasz prośbę, to w celu zainstalowania nowych kluczy. your_username@remote_host password:

Liczba dodanych kluczy: 1

Teraz spróbuj zalogować się na maszynę za pomocą polecenia: „ssh 'nazwa_użytkownika@zdalny_host'” i upewnij się, że dodane zostały tylko te klucze, które chciałeś.

2. Za pomocą bezpiecznego kopiowania (scp)

Bezpieczne kopiowanie (scp) to narzędzie, które kopiuje pliki z lokalnego komputera na zdalny serwer za pośrednictwem protokołu SSH.

Połącz się z serwerem za pomocą SSH jako użytkownik, do którego chcesz dodać swój klucz:

# ssh your_username@remote_host

Stwórz katalog ~/.ssh oraz plik authorized_keys, jeśli jeszcze nie istnieją:

# mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys

Nadaj odpowiednie uprawnienia do katalogu ~/.ssh i pliku authorized_keys:

# chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

W terminalu na swoim lokalnym komputerze użyj polecenia scp, aby skopiować zawartość swojego klucza publicznego SSH (id_rsa.pub) do pliku authorized_keys na serwerze.

# scp ~/.ssh/id_rsa.pub your_username@remote_host:~/.ssh/authorized_keys

Teraz możesz zalogować się na serwerze przy użyciu swojego klucza.

3. Ręczne kopiowanie klucza publicznego

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

Ręcznie dołączymy zawartość pliku id_rsa.pub do pliku ~/.ssh/authorized_keys na zdalnej maszynie.

Aby wyświetlić zawartość klucza id_rsa.pub, wpisz to na swoim lokalnym komputerze:

# cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyVGaw1PuEl98f4/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWmDKljtv1dmSBCrTmEAQaOorxqGGBYmZS7NQumRe4lav5r6wOs8OACMANE1ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUzzjl1Jwku3bnRaCcjaxH8oTumt1a00mWci/1qUlaVFft085yvVq7KZbF2OPPbl+erDW91+EZ2FgEi+v1/CSJ5 your_username@hostname

Zauważ, że klucz publiczny zaczyna się od ssh-rsa i kończy się twoją_nazwa_użytkownika@nazwa_hosta.

Skopiuj ten tekst, połącz się z serwerem za pomocą SSH jako użytkownik, do którego chcesz dodać swój klucz:

# ssh your_username@remote_host

Stwórz katalog ~/.ssh oraz plik authorized_keys, jeśli jeszcze nie istnieją:

# mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys

Nadaj odpowiednie uprawnienia do katalogu ~/.ssh i pliku authorized_keys:

# chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

Otwórz plik authorized_keys za pomocą edytora tekstu. Następnie wklej zawartość swojego klucza publicznego, którą skopiowałeś na nową linię na końcu pliku. Zapisz i zamknij plik.

Teraz możesz zalogować się na serwerze za pomocą swojego klucza.

Tworzenie skrótów SSH

Zamiast używać SSH na adresie IP, który na pewno zapomnisz, możesz użyć skrótów zamiast tego.

# cd ~/.ssh

# vi config

Dodaj wpis dla każdego komputera, do którego chcesz się połączyć, w ten sposób:

Host test
    HostName remote_host
    Port 22
    User your_username
    IdentityFile ~/.ssh/id_rsa

Teraz możesz użyć skrótu do połączenia się przez SSH z serwerem.

# ssh test

Teraz powinieneś mieć skonfigurowane uwierzytelnianie oparte na kluczach SSH na swoim serwerze, umożliwiające logowanie się bez podawania hasła konta. Jeśli potrzebujesz pomocy w administrowaniu serwerem, możesz zamówić usługę Administracji Serwerem od Unihost