Jak używać SSH i kluczy SSH na Linuxie: Przewodnik dla początkujących
TIPJeżeli utkniesz w dowolnym momencie tego poradnika, skopiuj treść swoich błędów do dowolnego czatu AI, a on pomoże Ci pójść dalej.
Na czym polega SSH i do czego służy SSH
Aby połączyć się ze swoim serwerem, masz dwie możliwości: albo podłączasz klawiaturę i monitor - co bywa niewygodne, a często niemożliwe, albo łączysz się z niego za pomocą SSH. SSH to protokół komunikacyjny, który pozwala na bezpieczne połączenie z zdalnym serwerem.
Jak używać SSH
Niezależnie czy jesteś na Linuxie czy Windowsie 10+, otwórz terminal/cmd/wiersz poleceń i użyj polecenia ssh
W miejsce user wpisz nazwę użytkownika, zazwyczaj to będzie root, user, ubuntu lub debian. W miejsce serwer wpisz adres IP lub podaj domenę twojego serwera. @ to wskaźnik do jakiego serwera się łączymy. Tak jak w poczcie email, to co przed małpą to twoja nazwa użytkownika, to co po małpie to serwer.
ssh user@serwerna przykład:
ssh root@10.0.10.28Jeżeli do swojego serwera otrzymałeś niestandardowy port, podaj go w parametrze p
ssh -p44111 user@serwerJeżeli twój serwer ma tylko adres IPv6, dodaj parametr 6, lecz jest on opcjonalny - SSH samo powinno wykryć adres IPv6.
ssh -6 user@128d:b43a:a578:e371:de6f:1078:2306:0ffcJeżeli podałeś dobrą nazwę użytkownika, adres IP, a serwer akceptuje ruch przychodzący, zobaczysz taką odpowiedź. To oznacza, że serwer prosi Cię o hasło. Jeżeli wynajmujesz serwer, to hasło dostałeś na maila lub jest widoczne w panelu.
TIPWpisujesz hasło na Linuxie, ale nic się nie pokazuje? To normalne, że nic się nie pojawia w konsoli - na Linuxie nie ma wizualnej reprezentacji tego, że wpisujesz hasło, dlatego na “ślepo” wpisz hasło i potwierdź je enterem.
root@10.0.10.21's password:
Po wpisaniu poprawnego hasła zobaczysz tekst podobny do tego - oznacza to, że poprawnie połączyłeś się do serwera po SSH, a wszystkie polecenia, które teraz wydasz, będą mieć skutek na serwerze, a nie twoim komputerze.
ssh root@10.0.10.21 root@10.0.10.21's password: Linux debian-amd64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@debian ~ #
Aby się rozłączyć, możesz zamknąć terminal, na klawiaturze kliknąć skrót CTRL + D lub wpisać polecenie exit
exitCzym są klucze SSH
Klucze SSH to kryptograficzna para kluczy (prywatny i publiczny), które służą do uwierzytelniania się przy połączeniach zdalnych, głównie z serwerami, bez konieczności wpisywania hasła. Zaleca się korzystać z kluczy SSH, a nie haseł, natomiast warto w razie różnych sytuacji mieć zapisane hasło do swojego użytkownika na serwerze.
Klucz prywatny, jak sama nazwa wskazuje jest supertajny i nie może do niego dostępu mieć nikt poza tobą, oraz klucz publiczny, który znać może każdy. Klucz prywatny zostaje na twoim komputerze, klucz publiczny trafia na serwer, z którym chcesz się łączyć bez użycia hasła.
Jak używać kluczy SSH. Jak logować się do serwera bez hasła
Najpierw musisz wygenerować sobie parę kluczy SSH. Użyj polecenia ssh-keygen, w parametrze t podajemy algorytm ed25519, a w parametrze c komentarz do klucza - przyjęło się, że standardowo podaje się tam adres email, ale możesz tam wpisać swój nick albo imię.
ssh-keygen -t ed25519 -C "japancat@example.com"W tym momencie zostaniesz poproszony o podanie lokalizacji, w której mają zostać stworzone klucze SSH. Najlepiej wybrać domyślną lokalizację w twoim katalogu domowym, czyli ~/.ssh/, więc kliknij tylko enter nie wpisując nic.
japancat@pc ~ $ ssh-keygen -t ed25519 -C "japancat@example.com" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/japancat/.ssh/id_ed25519):
Następnie zostaniesz poproszony o podanie hasła (a potem o powtórzenie hasła), którym zostanie zabezpieczony twój klucz prywatny. Oznacza to tyle, że w momencie gdy ktoś wejdzie w posiadanie twojego klucza prywatnego, będzie najpierw musiał odgadnąć hasło. (Nie będziesz za każdym razem wpisywać tego hasła, klient SSH je zapamięta). Możesz też przejść dalej nie podając hasła (brak hasła zatwierdzasz klikając enter), ale nie zaleca się tego.
Gdy wszystko się powiedzie, zobaczysz komunikat z informacją o lokalizacji, gdzie zostały zapisane twoje klucze SSH. Twój klucz prywatny to plik id_ed25519, a publiczny klucz to id_ed25519.pub.
Your identification has been saved in /home/japancat/.ssh/id_ed25519 Your public key has been saved in /home/japancat/.ssh/id_ed25519.pub
Zawartość obu kluczy możesz podejrzeć poleceniem cat:
cat ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pubPrzesyłanie klucza publicznego na serwer zdalny
Żeby serwer mógł Cię uwierzytelnić przy użyciu twojego klucza prywatnego, najpierw musisz wysłać swój klucz publiczny na serwer.
ssh-agent to proces w tle, który przechowuje Twoje klucze w pamięci, by nie trzeba było wpisywać hasła ani wskazywać lokalizacji klucza przy każdej sesji SSH. Aby uruchomić agenta i dodać klucz, wykonaj te polecenia:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Teraz wyślemy klucz publiczny na twój serwer poleceniem ssh-copy-id. Jeżeli posiadasz niestandardowy port SSH, użyj parametru p.
ssh-copy-id user@serwerMożesz zostać poproszony o potwierdzenie nawiązania połączenia takim komunikatem:
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Żeby potwierdzić, klikasz enter, następnie zostaniesz poproszony o podanie hasła do serwera. Gdy klucz publiczny zostanie pomyślnie dodany do serwera, zobaczysz komunikat:
Number of key(s) added: 1
Manualne przesyłanie klucza publicznego na serwer zdalny
Ten krok możesz pominąć, jeżeli udało Ci się przesłać klucz publiczny poleceniem ssh-copy-id. Jeżeli Ci się nie udało, możesz ten proces wykonać manualnie tymi poleceniami:
ssh user@serwer #połącz się z serwerem
mkdir ~/.ssh #stwórz katalog .ssh jeżeli taki nie istnieje
cd ~/.ssh #wejdź do tego katalogu
touch authorized_keys #stwórz plik authorized_keys
#do pliku authorized_keys wklej klucz publiczny (`id_ed25519.pub`), zapisz i zamknij
chmod 700 ~/.ssh #nadaj poprawne uprawnienia
chmod 600 ~/.ssh/authorized_keys #nadaj poprawne uprawnieniaKonfiguracja serwera, aby akceptował logowanie kluczami SSH
Upewnij się, że plik /etc/ssh/sshd_config zawiera następujące ustawienia (znak # oznacza, że dana linijka jest zakomentowana, czyli dana dyrektywa jest wyłączona i nie działa). Edycja tego pliku jako zwykły user może nie być możliwa - skorzystaj z sudo lub usera root.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yesUstawieniem PasswordAuthentication yes pozwalamy nadal logować się hasłem, tak dla bezpieczeństwa, żebyś się nie odciął od serwera. Po zmianach uruchom ponownie serwer SSH poleceniem:
sudo systemctl restart sshOd teraz możesz bezpiecznie logować się na serwer bez podawania hasła przy użyciu kluczy SSH poleceniem:
ssh user@serwer.ssh/config czyli jak sprawniej korzystać z SSH
Plik config umożliwia tworzenie customowych połączeń, oznacza to, że możesz skonfigurować SSH, aby łączyć się do serwera np. minecraft poleceniem ssh mc, a nie ssh -p43821 user11@fastfreemchosting.gov
Otwórz plik ~/.ssh/config i dodaj tam taką zawartość:
Host mc
HostName fastfreemchosting.gov
User user11
Port 43821W Host podajesz nazwę serwera, po której będziesz się łączyć - może to być cokolwiek, co zapamiętasz. W HostName adres IP lub domenę serwera, w Port podaj port SSH, jeżeli jest niestandardowy. Jeżeli to domyślne 22, to nie musisz tego podawać.
Zapisz plik, wyjdź z niego i przetestuj połączenie wpisując:
ssh mcAlternatywni klienci SSH
Klasyka to Putty, jest też MobaXterm, Termius, Kitty, mRemoteNG, Terminator. Na Androida polecam JuiceSSH.
Więcej wpisów o Linuxie znajdziesz w kategorii linux

