Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

Pierwsze logowanie przez SSH

Moduł 1: Pierwszy serwer · Czas czytania: 10 min

Cel lekcji: Po tej lekcji będą Państwo potrafili po raz pierwszy zalogować się na swój serwer przez SSH, sprawdzić odcisk klucza serwera, zanim mu Państwo zaufają, oraz będą Państwo wiedzieć, co zrobić w przypadku ostrzeżenia, że tożsamość serwera uległa zmianie.

Kluczowe pojęcia: SSH, klient i serwer, port 22, baner wersji, host key, odcisk klucza (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell i Terminal

Czym jest SSH

SSH (Secure Shell) to szyfrowane połączenie, za pomocą którego zarządzają Państwo serwerem zdalnie. Polecenia wpisują Państwo na własnym komputerze, a wykonywane są one na serwerze. Wszystko, co przesyłane jest przez łącze, również Państwa hasło, jest szyfrowane.

Połączenie ma dwie strony:

  • klient SSH na Państwa komputerze: program ssh. W systemach macOS i Linux jest dostępny domyślnie. W systemie Windows 10 (od wersji 1809) i Windows 11 klient OpenSSH jest częścią systemu Windows; korzystają z niego Państwo w PowerShell lub Windows Terminal. Jeśli go brakuje, można go dodać przez Ustawienia, Funkcje opcjonalne, "Klient OpenSSH". Programy okienkowe, takie jak PuTTY, również działają, ale w tym kursie używamy ssh.
  • serwer SSH na VPS: program sshd (z pakietu OpenSSH). Domyślnie nasłuchuje na porcie 22.

Logowanie

Logują się Państwo, podając nazwę użytkownika i adres serwera:

PS C:\Users\anna> ssh root@192.0.2.10

Lub nazwę, jeśli została ona wpisana do DNS (lekcja 7.1):

anna@laptop:~$ ssh root@web1.example.com

Za pierwszym razem zobaczą Państwo coś takiego:

The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

To najważniejszy moment tej lekcji. Prosimy nie wpisywać na ślepo yes.

Host key i odcisk klucza

Każdy serwer SSH ma jeden lub więcej kluczy hosta (host keys): par kluczy, za pomocą których serwer potwierdza swoją tożsamość. Części publiczne znajdują się na serwerze w /etc/ssh/, na przykład /etc/ssh/ssh_host_ed25519_key.pub. Przy każdym połączeniu serwer wykazuje, że posiada część tajną.

Odcisk klucza (fingerprint) to krótkie streszczenie (skrót, hash) takiego klucza publicznego. OpenSSH domyślnie pokazuje postać SHA256: SHA256:, a po nim 43 znaki.

Pytanie "Are you sure you want to continue connecting?" oznacza, że Państwa komputer jeszcze nie zna tego serwera. Kto gwarantuje, że rozmawiają Państwo ze swoim VPS, a nie z kimś, kto przechwytuje ruch? Nikt, chyba że porównają Państwo odcisk klucza z wiarygodnym źródłem.

Tym źródłem jest konsola Państwa dostawcy (lekcja 1.2). Przez konsolę nie komunikują się Państwo z serwerem przez sieć. Prosimy zalogować się w konsoli i wyświetlić odcisk klucza:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Jeśli zgadza się on dokładnie z tym, co pokazuje klient, wpisują Państwo yes. Zamiast yes można też wkleić sam odcisk klucza; wtedy ssh porówna go za Państwa. Jeśli się różni, prosimy przerwać i ustalić przyczynę (błędny adres IP, ponownie zainstalowany serwer lub coś poważniejszego).

Prosimy zwrócić uwagę na typ: klient podaje typ klucza (ED25519, ECDSA lub RSA). Porównują Państwo odcisk klucza tego samego typu. Wiele obrazów systemu wyświetla odciski kluczy w konsoli także przy pierwszym uruchomieniu (cloud-init), między wierszami takimi jak BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts i trust on first use

Po wpisaniu yes zobaczą Państwo:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

Klient zapisuje klucz w ~/.ssh/known_hosts (w systemie Windows w C:\Users\<naam>\.ssh\known_hosts). Od tej chwili przy każdym połączeniu porównuje go automatycznie. Ten model nazywa się trust on first use (TOFU, zaufanie przy pierwszym użyciu): za pierwszym razem muszą Państwo sprawdzić klucz samodzielnie, potem pilnuje tego klient.

Dlatego ta pierwsza kontrola jest tak ważna: jeśli zaufają Państwo niewłaściwemu kluczowi, klient już nigdy więcej nie ostrzeże.

Jeśli sami pracują Państwo na komputerze z Debianem lub Ubuntu, nazwy w known_hosts są domyślnie zapisywane w postaci skrótu (HashKnownHosts yes w /etc/ssh/ssh_config), więc nie zobaczą tam Państwo czytelnych adresów IP. W systemach Windows i macOS są one zapisane czytelnie. Wyszukiwanie wszędzie działa za pomocą:

anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...

"REMOTE HOST IDENTIFICATION HAS CHANGED"

Czasem pojawia się takie ostrzeżenie:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

Serwer przedstawia inny klucz niż ten, który zna Państwa klient. ssh odmawia wtedy połączenia. Przyczyny są dwojakiego rodzaju:

NormalnePodejrzane
Ponownie zainstalowali Państwo VPS (nowe klucze hosta)Niczego Państwo nie zmieniali, a mimo to klucz jest inny
Adres IP został przydzielony innemu serwerowiKorzystają Państwo z obcej sieci Wi-Fi
Celowo wymienili Państwo klucze hostaOdcisk klucza w konsoli różni się od tego, co klient widzi teraz

Jeśli istnieje normalne wyjaśnienie, prosimy ponownie sprawdzić odcisk klucza w konsoli i dopiero potem usunąć stary wiersz:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

Przy następnym połączeniu pojawi się znowu pytanie jak za pierwszym razem i ponownie sprawdzą Państwo klucz. Prosimy nigdy nie ustawiać StrictHostKeyChecking no w konfiguracji, aby pozbyć się ostrzeżenia: wyłączyliby Państwo dokładnie tę ochronę, o którą chodzi.

Baner wersji

Zanim cokolwiek zostanie zaszyfrowane, klient i serwer wysyłają sobie nawzajem wiersz tekstu: baner wersji. Jest on widoczny dla każdego w internecie. Można go zobaczyć za pomocą ssh -v:

anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5

Serwer informuje tutaj, jakiego protokołu (2.0) i jakiego oprogramowania używa. Debian i Ubuntu dopisują do tego wersję pakietu. Nie jest to tajemnica, którą trzeba ukrywać: atakujący i tak próbują wszystkiego, a chronią się Państwo aktualizacjami (moduł 4), a nie innym banerem. Jest to natomiast przydatne: po banerze widać z zewnątrz, czy na serwerze naprawdę działa zaktualizowana wersja.

W systemach AlmaLinux i Rocky Linux

Logowanie i odciski kluczy działają tak samo. Usługa nazywa się sshd zamiast ssh (systemctl status sshd). Baner nie zawiera nazwy dystrybucji, tylko wersję OpenSSH.

Podsumowanie

  • SSH to szyfrowane połączenie z Państwa serwerem; ssh to klient, sshd to serwer na porcie 22.
  • Przy pierwszym połączeniu klient pokazuje odcisk klucza hosta. Prosimy porównać go z wynikiem ssh-keygen -lf w konsoli, zanim wpiszą Państwo yes.
  • Klient zapisuje klucz w ~/.ssh/known_hosts i od tej pory sam ostrzega (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" jest normalne po ponownej instalacji; w innych przypadkach jest podejrzane. Stary wiersz prosimy usuwać tylko po sprawdzeniu, za pomocą ssh-keygen -R.
  • Baner wersji jest publiczny; ochronę zapewniają aktualizacje, a nie ukrywanie.

Quiz

1. Z czym porównują Państwo odcisk klucza, który ssh pokazuje przy pierwszym połączeniu?



2. Do czego służy ~/.ssh/known_hosts?



3. Ponownie zainstalowali Państwo VPS i pojawia się "REMOTE HOST IDENTIFICATION HAS CHANGED". Jaka jest właściwa kolejność?



4. Dlaczego pierwsza kontrola w modelu trust on first use jest tak ważna?



5. Co pokazuje baner wersji serwera SSH?



Zadanie

Zadanie Z1.3: Baner SSH i odcisk klucza Państwa serwera. Prosimy podać adres swojego serwera, wersję oprogramowania z banera (na przykład OpenSSH_9.6p1) oraz odcisk klucza ED25519, który wyświetlili Państwo w konsoli za pomocą ssh-keygen -lf. Program nawiązuje jedno połączenie z Państwa portem SSH, odczytuje baner i klucz hosta, a następnie je porównuje. Program się nie loguje.

Zadanie Z1.3: Baner SSH i odcisk klucza Państwa serwera

Nie logujemy się i nie próbujemy żadnego hasła ani klucza. Najpierw prosimy wykazać, że serwer należy do Państwa: proszę kliknąć „Pokaż mój kod” i umieścić plik /.well-known/weboke-cursus-<code>.txt zawierający wyłącznie ten kod na serwerze WWW pod Państwa nazwą hosta. Pobieramy go bezpośrednio z każdego sprawdzanego adresu IP (IPv4 i IPv6 osobno); rekord TXT nie jest tu uwzględniany. Kontrola jest wykonywana z heavy.webawere.nl (185.158.167.16 i 2a07:ae80:100:0:185:158:167:16), a nie z naszego serwera WWW. Tylko dla zalogowanych uczestników kursu; maksymalnie 6 kontroli na godzinę na serwer. W tym zadaniu nawiązujemy jedno połączenie i odczytujemy jedynie baner oraz klucz serwera; w Państwa logu nie pojawi się żadna próba logowania.





Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Przeczytaj więcej

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…