Co to jest SSH?
SSH oznacza Secure Shell. Dzięki SSH możesz uzyskiwać dostęp do zdalnych maszyn w bezpieczny sposób, ponieważ połączenie jest szyfrowane. Za pomocą polecenia ssh z terminala Linux możemy łączyć się ze zdalnymi serwerami Linux i pracować tak, jakby to był nasz własny komputer. Pod koniec tego samouczka powinieneś w pełni zrozumieć, jak używać SSH do łączenia się ze zdalnym serwerem w Ubuntu.
Składnia
Składnia to reguła określająca sposób użycia polecenia ssh. Możesz modyfikować układ składni, ale należy zachować bezpośredni format. Poniżej znajduje się przykład składni dla użycia polecenia ssh:
|
1 |
ssh remote_host |
Nazwa domeny lub adres IP, z którym chcesz się połączyć, to remote_host, jak pokazano w powyższym poleceniu. Ta składnia zakłada, że Twoja nazwa użytkownika w systemie zdalnym i systemie lokalnym jest taka sama. Jeśli jednak nazwy użytkowników nie są takie same, możesz to określić za pomocą tego polecenia:
|
1 |
ssh remote_username@remote_host |
Musisz zweryfikować swoją tożsamość, podając hasło natychmiast po połączeniu się z serwerem. Wpisz polecenie exit, aby powrócić do sesji lokalnej.
Jak skonfigurować SSH
Główny plik konfiguracyjny sshd w systemie Ubuntu znajduje się w lokalizacji /etc/ssh/sshd_config. Jeśli zmienisz konfigurację SSH, ustawienia serwera SSHD zmienią się automatycznie. Przed przystąpieniem do jakiejkolwiek konfiguracji upewnij się, że utworzyłeś kopię zapasową aktualnej wersji pliku za pomocą tego polecenia:
|
1 |
sudo cp /etc/ssh/sshd_config{,.bak} |
Użyj edytora tekstu, aby go otworzyć:
|
1 |
sudo nano /etc/ssh/sshd_config |
Większość parametrów w tym pliku należy pozostawić bez zmian. Istnieje jednak kilka rzeczy, na które należy zwrócić uwagę:
|
1 |
Port 22 |
Deklaracje portów wskazują port, na którym serwer SSHD oczekuje na połączenia. Domyślny to 22. O ile nie ma konkretnych powodów, nie musisz zmieniać tego ustawienia:
|
1 2 3 |
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key |
Deklaracja klucza hosta wskazuje, gdzie znajduje się globalny klucz hosta:
|
1 2 |
SyslogFacility AUTH LogLevel INFO |
Te dwie pozycje wskazują poziom logowania, który powinien być stosowany. Jeśli masz problemy z korzystaniem z SSH, doskonałym sposobem na zidentyfikowanie problemu jest zwiększenie szczegółowości logów:
|
1 2 3 |
LoginGraceTime 120 PermitRootLogin yes StrictModes yes |
Opcje te definiują pewne informacje dotyczące logowania, aby zapobiec nieautoryzowanemu logowaniu, gdy pliki konfiguracyjne są niezabezpieczone:
|
1 2 |
X11Forwarding yes X11DisplayOffset 10 |
Te konfiguracje parametrów są określane jako funkcje przekazywania X11. W ten sposób można wyświetlić interfejs graficzny (GUI) zdalnego systemu na systemie lokalnym. Musisz włączyć tę opcję na serwerze, łącząc się z klientem SSH za pomocą opcji -X.
Po wprowadzeniu zmian zapisz plik i zamknij go, naciskając CTRL-X i Y, a następnie naciśnij Enter. Jeśli zmienisz ustawienia w / etc / ssh / sshd_config, musisz zrestartować serwer sshd, aby zastosować zmiany:
|
1 |
sudo service ssh restart |
W przypadku systemów z systemd, takich jak Ubuntu 16.04 lub Debian Jessie, użyj tego polecenia:
|
1 |
sudo systemctl restart ssh |
Dokładnie przetestuj wprowadzone zmiany, aby upewnić się, że wszystko działa idealnie. Prawdopodobnie powinieneś zachować kilka aktywnych sesji w przypadku wprowadzania jakichkolwiek zmian. W ten sposób w razie potrzeby będzie można przywrócić konfigurację.
Jak zalogować się do SSH za pomocą kluczy? Logowanie się do zdalnego systemu za pomocą hasła jest dobre. Najlepiej jednak skonfigurować uwierzytelnianie oparte na kluczach.
Co to jest uwierzytelnianie oparte na kluczach?
Uwierzytelnianie oparte na kluczach tworzy dwie pary kluczy zwane kluczem prywatnym i publicznym. Klucz prywatny znajduje się na komputerze użytkownika i jest chroniony oraz utrzymywany w tajemnicy. Klucz publiczny może być udostępniony każdemu lub przechowywany na dowolnym serwerze, do którego chcesz uzyskać dostęp. Jeśli próbujesz połączyć się za pomocą pary kluczy, serwer używa klucza publicznego do wygenerowania wiadomości dla komputera użytkownika. Użytkownik może odczytać tę wiadomość tylko za pomocą klucza prywatnego. Następnie komputer użytkownika wysyła odpowiedź z powrotem do serwera, a serwer wie, że użytkownik jest autentyczny. Po ustawieniu klucza cały proces kończy się automatycznie w tle.
Jak utworzyć klucze SSH
Klucze SSH powinny być generowane na komputerze, z którego chcesz się zalogować. Zazwyczaj jest to Twój lokalny komputer. Wprowadź następujące polecenie w wierszu poleceń:
|
1 |
ssh-keygen -t rsa |
Następnie zaakceptuj wartości domyślne, naciskając klawisz ENTER. Spowoduje to wygenerowanie kluczy w lokalizacjach ~/.ssh/id_rsa.pub i ~/.ssh/id_rsa. Następnie wpisz poniższe polecenie, aby przejść do katalogu .ssh:
|
1 |
cd ~/.ssh |
Oto uprawnienia do tych plików:
|
1 |
ls -l |

Jak widać, tylko właściciel może odczytywać i zapisywać plik id_rsa. Dlatego należy go bezpiecznie przechowywać. Możesz jednak udostępnić plik id_rsa.pub i posiadać odpowiednie uprawnienia do tej czynności. Następnym krokiem jest przesłanie klucza publicznego na serwer przy użyciu następującej składni:
|
1 |
ssh-copy-id remote_host |
To rozpocznie sesję SSH i musisz użyć hasła do uwierzytelnienia. Po wprowadzeniu hasła Twój klucz publiczny zostanie skopiowany do pliku autoryzowanych kluczy serwera, dzięki czemu przy następnym logowaniu nie będziesz potrzebować hasła.
Jak wyłączyć uwierzytelnianie hasłem
Jeśli klucz SSH został wygenerowany, możesz poprawić bezpieczeństwo serwera, wyłączając uwierzytelnianie wyłącznie za pomocą hasła. Możesz zalogować się na serwer za pomocą klucza prywatnego z zainstalowanym kluczem publicznym na serwerze zamiast korzystać z konsoli.
Uwaga: Przed przejściem do tego kroku upewnij się, że zainstalowałeś klucz publiczny na serwerze. W przeciwnym razie zostaniesz zablokowany!
Otwórz plik konfiguracyjny sshd za pomocą tego polecenia:
|
1 |
sudo nano /etc/ssh/sshd_config |
Znajdź i odkomentuj linię dotyczącą sprawdzania uwierzytelniania hasłem, usuwając znak # na początku. Następnie możesz zmienić wartość na “no”:
|
1 |
PasswordAuthentication no |
Opcje PubkeyAuthentication i ChallengeResponseAuthentication są ustawione domyślnie i powinny wyglądać następująco:
|
1 2 |
PubkeyAuthentication yes ChallengeResponseAuthentication no |
Nie należy zmieniać tych dwóch ustawień. Następnie zapisz plik i zamknij go po wprowadzeniu zmian. Następnie użyj poniższego polecenia, aby zrestartować demona SSH:
|
1 |
sudo systemctl restart ssh |
Ostatecznie wyłączyłeś uwierzytelnianie hasłem i dostęp do Twojego serwera można uzyskać wyłącznie za pomocą uwierzytelniania kluczem SSH.
Podsumowanie
W tym samouczku pokazaliśmy, jak bezpiecznie używać SSH do łączenia się z odległym serwerem w systemie Ubuntu. Nauka korzystania z SSH jest kluczowa, jeśli jesteś administratorem systemu, więc po opanowaniu tego samouczka możesz przejść do bardziej zaawansowanych funkcji SSH.
Udanego korzystania z komputera!
Komentarze
Brak komentarzy. Bądź pierwszy.