Jak połączyć się przez SSH. Przewodnik dla Windows i Linux

Tajemnicza sylwetka w ciemnym otoczeniu, z czerwonym kodem binarnym wyświetlonym na twarzy.

Wpisujesz ssh user@192.168.1.10, serwer pyta o hasło, ty je klepiesz po raz setny w tym tygodniu. Działa, ale boli. Jak połączyć się przez SSH bez tego rytuału? Krótka odpowiedź: klucz zamiast hasła i alias zamiast długiego adresu.

Ten poradnik nie jest kolejnym przepisaniem manuala. Pokazujemy konkretne komendy: ssh-keygen do wygenerowania pary kluczy, plik .ssh/config, który zmienia trzy parametry logowania w jedno słowo, oraz realne różnice między PowerShell, PuTTY i MobaXterm. Na końcu rozprawiamy się z najczęstszymi błędami: złym portem, firewallem i uprawnieniami do pliku klucza, bo to one, nie żadna sieciowa magia, psują większość połączeń. Każda sekcja to gotowa do wklejenia komenda, nie teoria z podręcznika.

TL;DR: SSH działa identycznie w Windows i Linuksie: ta sama komenda ssh, ten sam port TCP 22. Klucz z ssh-keygen zastępuje logowanie hasłem, publiczny trafia na serwer, prywatny zostaje lokalnie. Plik .ssh/config zamienia adres, port i klucz w jeden alias. Klienta (PowerShell, PuTTY, MobaXterm) wybierasz według liczby serwerów, nie mody. Błędy? Zwykle port, firewall albo uprawnienia klucza.

Jak połączyć się przez SSH w Windows i Linuksie

Połączenie SSH oznacza wpisanie jednej komendy, która przez zaszyfrowany tunel loguje cię na zdalnym serwerze, niezależnie czy siedzisz na Linuksie czy na Windowsie. Protokół działa domyślnie na porcie TCP 22, a składnia polecenia jest identyczna w obu systemach – różni się tylko miejsce, gdzie je wklepujesz.

Połączenie SSH z terminala w Linuksie

W Linuksie klient SSH jest częścią systemu od lat, nie instalujesz niczego z osobna. Otwieramy terminal i wpisujemy Ssh użytkownik@adres_ip. Przy pierwszym połączeniu system pyta o potwierdzenie odcisku klucza hosta, potem podajesz hasło i jesteś na miejscu.

Domyślnie SSH nasłuchuje na porcie TCP 22 (SSH Academy), więc jeśli administrator nie zmienił tego w sshd_config, nie musisz dopisywać flagi -p z numerem portu. Jeśli stawiasz dopiero serwer, na przykład świeży węzeł wirtualizacyjny, dokładnie tak zalogujesz się do niego po raz pierwszy z konsoli – zobacz Jak zacząć z Proxmox VE.

Połączenie SSH z Windows przez PowerShell i PuTTY

Od kilku lat Windows ma wbudowany klient OpenSSH prosto w PowerShell, więc komenda wygląda tak samo jak w Linuksie: Ssh użytkownik@adres_ip. Zero dodatkowego oprogramowania, zero konfiguracji.

Starsza szkoła to PuTTY – lekki program z graficznym okienkiem, gdzie wpisujesz adres hosta i port, klikasz „Open” i logujesz się w osobnym oknie terminala. Działa identycznie, tylko krok logowania jest bardziej klikalny niż wpisywany z klawiatury. Efekt końcowy jest ten sam: masz zdalną powłokę na serwerze.

Jak wygenerować klucz SSH poleceniem ssh-keygen

Polecenie Ssh-keygen tworzy parę kluczy: prywatny, który zostaje u ciebie, i publiczny, który wędruje na serwer. Uruchamiasz je tak samo w terminalu Linuksa, jak w PowerShellu na Windowsie, bo OpenSSH jest wszędzie tym samym narzędziem pod inną powłoką.

Ed25519 czy RSA, który klucz wybrać

Ed25519 to nowszy algorytm krzywych eliptycznych i domyślny wybór w większości poradników z ostatnich lat. Generujesz go komendą Ssh-keygen -t ed25519, plik klucza jest krótszy, a operacje logowania szybsze niż przy RSA. RSA nadal działa i wiele starszych urządzeń sieciowych czy przełączników go wymaga, bo nie potrafią jeszcze obsłużyć nowszej krzywej. Jeśli nie masz powodu trzymać się starego standardu (legacy hardware, wymóg firmowej polityki), wybierz ed25519 i nie zawracaj sobie głowy resztą.

Jak dodać klucz do authorized_keys

Klucz publiczny (plik z rozszerzeniem .pub) trzeba skopiować do pliku Authorized_keys w katalogu ~/.ssh na serwerze. Sam katalog domowy i jego podfoldery mają swoje miejsce w Strukturze katalogów Linuksa, więc jeśli nie wiesz, czemu akurat tam, warto to sobie ogarnąć raz na zawsze.

  1. Skopiuj zawartość pliku .pub ze swojego komputera.
  2. Wklej ją jako nową linię w ~/.ssh/authorized_keys na serwerze.
  3. Ustaw uprawnienia katalogu .ssh i pliku tak, by odczyt i zapis miał tylko właściciel, inaczej SSH odrzuci klucz jako zbyt otwarty.

Na Windowsie z klientem OpenSSH w PowerShellu proces wygląda identycznie, tylko ścieżki do plików mają inny separator. Po tej konfiguracji logowanie hasłem możesz spokojnie wyłączyć.

Jak skonfigurować plik .ssh/config na przykładach

Plik ~/.ssh/config (na Linuksie) albo C:\Users\Twoja_nazwa\.ssh\config (na Windows) pozwala zapamiętać ustawienia połączenia SSH dla każdego serwera z osobna. Zamiast wpisywać za każdym razem długi ciąg z adresem, portem i nazwą użytkownika, wystarczy skrócony alias. Plik działa identycznie w obu systemach, różni się tylko lokalizacją.

Zbliżenie klawiatury komputera z widocznymi literami i cyframi, oświetlonej dramatycznym światłem.
Klawiatura to Twoje główne narzędzie do konfiguracji SSH. (Fot. Antonio Borriello / Pexels)

Niestandardowy port i alias hosta

Jeśli administrator zmienił domyślny port SSH (co samo w sobie jest sensownym zabezpieczeniem), trzeba go wskazać w konfiguracji jawnie. Blok w pliku wygląda tak:

  • Host moj-serwer – alias, który wpisujesz w terminalu
  • HostName – prawdziwy adres lub domena serwera
  • User – nazwa konta na serwerze
  • Port – numer portu, jeśli inny niż standardowy
  • IdentityFile – ścieżka do klucza prywatnego

Po zapisaniu takiego wpisu polecenie Ssh moj-serwer ładuje wszystkie te ustawienia automatycznie. Przy kilkunastu serwerach, na przykład rozsianych po Kontenerach LXC na Proxmoksie, to jedyny sposób, żeby nie zwariować przy każdym logowaniu.

Konfiguracja dla home.pl i LH.pl

Popularni polscy hostingodawcy, home.pl i LH.pl, mają swoje wymagania co do połączenia SSH: inną nazwę hosta, inny format nazwy użytkownika, czasem osobny port dla dostępu SSH niż dla FTP. Te dane trzeba sprawdzić w panelu klienta przed pisaniem konfiguracji, bo różnią się między pakietami hostingowymi.

Praktyczne podejście: dla każdego dostawcy tworzysz osobny blok Host z własnym aliasem, np. Home-pl i Lh-pl, żeby uniknąć pomyłek przy kopiowaniu klucza publicznego na zły serwer. Reszta parametrów (HostName, User, IdentityFile) wynika z danych podanych przez hosting.

Który klient SSH wybrać: PuTTY, MobaXterm czy PowerShell

Nie ma jednego klienta SSH lepszego od innych – wybór zależy od tego, czy pracujesz głównie na Windowsie, ile serwerów obsługujesz naraz i czy potrzebujesz graficznego menedżera plików. PuTTY sprawdza się przy jednorazowych połączeniach, MobaXterm przy pracy z wieloma hostami naraz, a natywny klient OpenSSH w PowerShellu wygrywa prostotą i brakiem instalacji.

PuTTY ma swoich wiernych fanów i nie bez powodu – jest lekki, nie wymaga instalacji i działa tak samo od lat, więc skrypty i przyzwyczajenia z nim nie tracą aktualności. Problem zaczyna się, gdy trzeba zarządzać kilkunastoma sesjami naraz albo przeciągnąć plik na serwer. PuTTY nie ma wbudowanego transferu plików ani zakładek, trzeba dokładać osobne narzędzia jak WinSCP.

MobaXterm rozwiązuje ten problem menedżerem sesji i wbudowanym eksploratorem plików działającym po SFTP, więc katalog zdalny widać bez osobnego okna. Minus: pełna wersja z wieloma sesjami jednoczesnymi jest płatna, a darmowa ma ograniczenia, które szybko dają się poczuć przy pracy z większą liczbą hostów.

OpenSSH wbudowany w PowerShell to opcja dla tych, którzy wolą połączyć się przez SSH bez żadnego dodatkowego programu. Komenda Ssh działa od razu, korzysta z tego samego pliku .ssh/config co Linux, i nie ma GUI, którego trzeba się uczyć. Kosztem jest brak menedżera sesji i transferu plików w interfejsie graficznym – wszystko odbywa się w terminalu.

Tabela z funkcjami klientów SSH

KlientPlatformaObsługa kluczy SSHMenedżer sesjiTransfer plików w GUI
PuTTYWindowsTak (PuTTYgen)NieNie
MobaXtermWindowsTakTakTak (SFTP)
OpenSSH (PowerShell)Windows, LinuxTakNieNie

Jeśli zdalny host serwuje kontenery, sprawny menedżer sesji w MobaXterm ułatwia przeskakiwanie między maszynami podobnie łatwo jak zarządzanie kontenerami opisane w przewodniku Jak zacząć z Dockerem. Dla jednej maszyny i przyzwyczajenia do terminala sam PowerShell wystarczy bez instalowania czegokolwiek dodatkowego.

Najczęstsze pytania o połączenie SSH

Zanim zaczniesz szukać błędu w konfiguracji serwera, sprawdź te cztery scenariusze. Większość zgłoszeń „SSH nie działa” kończy się na literówce w adresie albo złych uprawnieniach pliku klucza, a nie na awarii demona sshd.

Na ekranie monitora komputera widoczny jest komunikat o ukończonym transferze danych, pod spodem leży klawiatura.
Transfer danych to podstawa, ale czy wiesz, jak bezpiecznie połączyć się z serwerem? (Fot. Rafael Minguet Delgado / Pexels)

Dlaczego nie mogę połączyć się przez SSH?

Najczęściej winny jest firewall blokujący port, źle podany port w komendzie (domyślny bywa zmieniony przez admina) albo usługa sshd, która po restarcie serwera nie wstała. Sprawdź też literówkę w adresie IP lub nazwie hosta, to klasyk. Jeśli łączysz się kluczem, a system i tak pyta o hasło, podejrzewaj złe uprawnienia pliku klucza prywatnego albo złego użytkownika w komendzie.

Co to jest PuTTY i jak go używać?

PuTTY to lekki klient SSH dla Windows, działający bez instalacji, wystarczy plik .exe. Otwierasz go, wpisujesz adres hosta i port w polu Session, klikasz Open i logujesz się loginem oraz hasłem albo kluczem wskazanym w sekcji Connection > SSH > Auth. Sesje można zapisać, żeby nie wpisywać adresu przy każdym połączeniu.

Jak połączyć się przez SSH z serwerem hostingowym?

Dane dostępowe (host, port, login) znajdziesz w panelu hostingu, zwykle w sekcji dotyczącej dostępu SSH lub SFTP. Z Linuksa wpisujesz w terminalu Ssh login@host -p port, z Windows użyjesz PowerShell z wbudowanym OpenSSH albo klienta typu PuTTY. Część hostingów wymaga wcześniejszego wgrania klucza publicznego w panelu, zanim połączenie się powiedzie.

Jak połączyć się przez SSH z kluczem?

Komenda wygląda tak: Ssh -i /sciezka/do/klucza użytkownik@host. Jeśli klucz masz zapisany w domyślnej lokalizacji i skonfigurowany w pliku .ssh/config, wystarczy krótsze Ssh nazwa_hosta bez podawania ścieżki ręcznie. Kluczowe jest ustawienie odpowiednich uprawnień do pliku prywatnego klucza, inaczej klient SSH go zignoruje i poprosi o hasło.