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.
O co chodzi z SSH i do czego ono służy
Żeby się połączyć do swojego serwera masz dwie opcje: albo podłączasz do niego klawiaturę i monitor - co jest niewygodne, a często niemożliwe, albo ze swojego komputera łączysz się poprzez SSH. SSH to protokół komunikacji umożliwiający Ci bezpieczne połączenie się do zdalnego serwera.
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@serwer
na przykład:
ssh [email protected]
Jeżeli do swojego serwera otrzymałeś niestandardowy port, podaj go w parametrze p
ssh -p44111 user@serwer
Jeż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:0ffc
Jeż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.
[email protected]'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 [email protected] [email protected]'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
exit
Czym 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 "[email protected]"
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.
dnkr@pc ~ $ ssh-keygen -t ed25519 -C "[email protected]" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/dnkr/.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/dnkr/.ssh/id_ed25519 Your public key has been saved in /home/dnkr/.ssh/id_ed25519.pub
Zawartość obu kluczy możesz podejrzeć poleceniem cat
:
cat ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Przesył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_ed25519
Teraz 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@serwer
Moż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 uprawnienia
Konfiguracja 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 yes
Ustawieniem 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 ssh
Od 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 [email protected]
Otwórz plik ~/.ssh/config
i dodaj tam taką zawartość:
Host mc
HostName fastfreemchosting.gov
User user11
Port 43821
W 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 mc
Alternatywni klienci SSH
Klasyka to Putty, jest też MobaXterm, Termius, Kitty, mRemoteNG, Terminator. Na Androida polecam JuiceSSH
.