SSH

Protokół umożliwiający szyfrowany, zdalny dostęp do konsoli serwera i bezpieczne wykonywanie poleceń. Powszechnie używany do administracji serwerami.

SSH (Secure Shell) to szyfrowany protokół sieciowy, który pozwala bezpiecznie połączyć się ze zdalnym serwerem, dostać konsolę (powłokę) i wykonywać na nim polecenia tak, jakbyś siedział przy jego klawiaturze. Cały ruch — login, hasło, komendy i ich wynik — leci przez zaszyfrowany tunel, więc nawet jeśli ktoś podsłuchuje sieć, zobaczy tylko bełkot. Domyślnie SSH nasłuchuje na porcie 22 (TCP). Dziś w użyciu jest praktycznie wyłącznie wersja SSH-2, opisana w RFC 4251 — starszy SSH-1 ma znane dziury i nikt rozsądny go już nie odpala.

Pod maską SSH robi trzy rzeczy. Najpierw warstwa transportowa szyfruje połączenie i weryfikuje tożsamość serwera (po jego kluczu — stąd słynne pytanie o fingerprint przy pierwszym połączeniu). Potem warstwa uwierzytelniania sprawdza, czy to naprawdę Ty — hasłem albo, znacznie lepiej, parą kluczy. Na koniec warstwa połączenia multipleksuje wszystko w jednym tunelu, dzięki czemu jedna sesja obsłuży naraz konsolę, kopiowanie plików i przekierowanie portów.

Jak wygląda to w praktyce

Najpopularniejsza implementacja to OpenSSH — masz ją na każdym Linuksie, macOS i nowszym Windowsie. Logowanie wygląda banalnie:

ssh [email protected]

Zamiast hasła stosuj klucze. Generujesz parę poleceniem ssh-keygen -t ed25519, klucz publiczny wgrywasz na serwer (ssh-copy-id pawel@serwer), a klucz prywatny zostaje u Ciebie. Od tej pory logujesz się bez wpisywania hasła, a do tego SSH obsłuży kopiowanie plików (scp, rsync) czy tunelowanie portów (ssh -L 8080:localhost:80 serwer). To samo SSH stoi za git push na GitHuba.

Na co uważać

  • Klucz prywatny to Twój dowód osobisty — nie wrzucaj go do repo ani na Slacka. Zabezpiecz passphrase.
  • Pierwsze połączenie pyta o fingerprint serwera. Nie klikaj yes na ślepo — to jedyny moment, gdy łapiesz podstawiony serwer (atak MITM).
  • Wyłącz logowanie hasłem i roota na produkcji (PasswordAuthentication no, PermitRootLogin no w sshd_config). Boty skanują port 22 non stop.
  • Mit: zmiana portu z 22 na inny to nie zabezpieczenie, tylko mniej hałasu w logach. Realnej ochrony daje uwierzytelnianie kluczem.

Pojęcia powiązane: OpenSSH, klucze publiczny/prywatny, SSH-keygen, SCP i SFTP, tunelowanie portów (port forwarding), TLS, VPN, plik sshd_config oraz known_hosts.