Klucze Publiczne i Prywatne SSH¶
Wymagania¶
- Pewnej znajomości zarządzania systemem z poziomu konsoli
- Serwera oraz maszyny klienckiej z systemem Rocky Linux z zainstalowanym pakietem openssh
- OK, z technicznego punktu widzenia, ta metoda powinna działać na każdej dystrybucji Linuxa z zainstalowanym pakietem openssh
- Opcjonalnie - znajomość systemu uprawnień w systemie Linux
Wstęp¶
SSH jest protokołem używanym do zdalnego łączenia się z jednej maszyny do drugiej, zwykle z poziomu konsoli. Z pomocą SSH możesz zdalnie wykonywać polecenia na serwerach, jak również przesyłać pliki, czyli w ogólności zarządzać wszystkimi swoimi zdalnymi maszynami z jednego miejsca.
Kiedy zarządzasz wieloma serwerami opartymi o Rocky Linux w wielu różnych lokalizacjach i chciałbyś zaoszczędzić trochę czasu przy łączeniu z nimi, SSH daje Ci możliwość użycia par kluczy prywatny-publiczny. Te pary kluczy ułatwiają logowanie się i pozwalają zaoszczędzić czas.
Ten dokument przeprowadzi Cię przez proces utworzenia pary kluczy oraz skonfigurowania Twoich serwerów do korzystania z nich.
Proces generowania kluczy¶
Poniższe polecenia będą uruchamiane wprost w konsoli Twojej stacji roboczej:
ssh-keygen -t rsa
co wyświetli następujący wynik:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Nacisnij enter aby zaakceptować domyślną lokalizację plików. System zapyta Cię:
Enter passphrase (empty for no passphrase):
Więc po prostu naciśnij Enter tutaj. Ponownie zostaniemy zapytani o hasło:
Enter same passphrase again:
A więc naciskamy Enter po raz ostatni.
Powinieneś teraz już mieć parę kluczy RSA, prywatny oraz publiczny, w Twoim katalogu .ssh .
ls -a .ssh/
. .. ..
Teraz wyślemy nasz klucz publiczny (id_rsa.pub) na każdy z serwerów z którymi będziemy się łączyć. Ale najpierw zanim to zrobimy upewnijmy się że mamy dostęp przez SSH do kazdej z tych maszyn. W naszym przykładzie posłużymy się tylko trzema serwerami.
Jeśli chodzi o łączenie się z serwerami za pomocą SSH to można to zrobić albo po adresie IP albo przez nazwę (DNS), w naszym przykładzie będziemy używać nazwy DNS. Nasze przykładowe serwry będą obsługiwać usługi www, mail oraz portal. Do każdego z serwerów będziemy się SSH-ować (prawdziwi nerdzi uwielbiają używać terminu SSH jako czasownik) i zostawiać otwarte okna konsol:
ssh -l root web.ourourdomain.com
Zakłóżmy że możemy się bez problemów zalogować na trzy maszyny, a zatem następny krok to porozsyłanie naszego publicznego klucza po wszystkich serwerach.
scp .ssh/id_rsa.pub root@web.ourourdomain.com:/root/
Powtarzamy ten krok dla każdego serwera.
Teraz w kazdym z otwartych okien terminali (konsol) możemy zobaczyć nasze skopiowane pliki za pomocą komendy:
ls -a | grep id_rsa.pub
Jeśli tak jest (jeśli widzimy te pliki) to teraz możemy dodać nasze klucze do plików authorized_keys znajdujących się w katalogu .ssh konta na które się łączymy na każdym serwerze (przypomnę, że dla potrzeb tego materiału jest to konto root'a). Jeśli nie ma tam pliku authorized_keys tworzymy go. Na każdym z serwerów wpisz to polecenie:
ls -a .ssh
Ważne!
Upewnij się że zapoznałeś się z poniższymi instrukcjami dokładnie. Jeśli nie jesteś pewien kolejnego kroku, zrób najpierw kopię authorized_keys (jeśli istnieje) na kazdym serwerze zanim zrobisz krok dalej.
Jeśli nie powyższa komenda nie wyświetli pliku authorized_keys wtedy tworzymy go poleceniem (wykonanym w katalogu /root ):
cat id_rsa.pub > .ssh/authorized_keys
A jeśli authorized_keys już istnieje wtedy tylko dodajemy nasz klucz do listy zapisanych w tym pliku poleceniem:
cat id_rsa.pub >> .ssh/authorized_keys
Kiedy już klucze będą dodane do istniejących plików authorized_keys bądź pliki authorized_keys zostaną przy tej okazji utworzone spróbujmy zalogować się poprzez SSH do naszych serwerów. Jeśli wszystko przebiegło pomyślnie nie zostaniemy poproszeni o podanie hasła.
Kiedy już zweryfikujemy pomyśłnie nowy sposób logowania się, możemy bezpiecznie usunąć pliki id_rsa.pub z katalogu /root każdego z serwerów poleceniem:
rm id_rsa.pub
Zabezpieczenie kluczy SSH i pliku authorized_keys¶
Upewnijmy się że na każdym z serwerów zostaną ustawione następujące prawa dostępu:
chmod 700 .ssh/
chmod 600 .ssh/authorized_keys
Author: Steven Spencer
Contributors: Ezequiel Bruni, markooff