PuTTY to bezpłatny, wieloplatformowy klient terminalowy (TELNET, SSH, rlogin) rozwijany przez Simona Tathama na licencji MIT. Program emuluje terminal tekstowy i umożliwia łatwe łączenie z serwerami zdalnymi przez szyfrowane i nieszyfrowane protokoły, oferując wygodny interfejs do administracji hostami.
Dzięki prostocie, bezpieczeństwu i wszechstronności PuTTY stał się standardowym narzędziem dla administratorów systemów, programistów i inżynierów sieci. Artykuł wyjaśnia historię, funkcjonalność, konfigurację oraz praktyczne zastosowania PuTTY, ze szczególnym naciskiem na bezpieczne połączenia SSH.
Definicja, historia i geneza PuTTY
PuTTY to klient terminala pozwalający nawiązywać zdalne połączenia z urządzeniami sieciowymi przez wiersz poleceń, co umożliwia wykonywanie komend na serwerach. Projekt stworzył Simon Tatham, brytyjski programista (ur. 1977), absolwent Uniwersytetu Cambridge, związany m.in. z ARM Holdings.
Tatham jest także autorem oryginalnego asemblera Netwide Assembler (NASM) i kolekcji gier logicznych dla jednego gracza (Nintendo DS, Symbian S60, Unix/GTK, Android, macOS, Windows). Pierwsze wydanie PuTTY ukazało się 22 stycznia 1999 r., a od tego czasu program stał się jednym z najpopularniejszych klientów SSH dla Windows oraz Linux/UNIX.
PuTTY obsługuje m.in. TELNET, rlogin, SSH-1 oraz SSH-2. SSH (Secure Shell) to protokół zdalnej administracji w sieciach TCP/IP, domyślnie używający portu 22. Z uwagi na luki bezpieczeństwa w SSH-1, w praktyce stosuje się wyłącznie SSH-2. Program oferuje szyfrowanie m.in. AES, 3DES, Blowfish, DES, zwiększając poufność i integralność transmisji.
PuTTY jest darmowy, open source, dostępny dla Windows i Linux/UNIX. Co istotne, nie wymaga instalacji w tradycyjnym sensie — po pobraniu można go uruchomić i od razu konfigurować połączenie, co świetnie sprawdza się w szybkim dostępie do hostów w heterogenicznych środowiskach IT.
Instalacja i konfiguracja podstawowa PuTTY
Najszybszą i najbezpieczniejszą metodą jest pobranie instalatora z oficjalnej strony producenta. Wejdź na adres https://www.putty.org/ i pobierz wydanie zgodne z Twoim systemem (EXE lub MSI dla Windows).
Przykładowa instalacja w systemie Windows przebiega następująco:
- uruchom instalator i kliknij „Next”,
- wybierz folder docelowy instalacji lub pozostaw domyślny,
- zaznacz komponenty (opcjonalnie „Add shortcut to PuTTY on the Desktop”),
- rozpocznij instalację i potwierdź uprawnienia,
- po zakończeniu kliknij „Finish”.
PuTTY występuje także w wersji portable, którą można uruchomić bezpośrednio z nośnika USB — to wygodna opcja, gdy łączysz się z różnych komputerów. Po starcie programu zobaczysz okno „PuTTY Configuration”, w którym ustawisz parametry sesji.
Podstawowe protokoły komunikacyjne wspierane przez PuTTY
Poniższa tabela podsumowuje kluczowe protokoły obsługiwane przez PuTTY:
| Protokół | Szyfrowanie | Domyślny port | Typowe zastosowanie |
|---|---|---|---|
| SSH (SSH-2) | Tak (np. AES) | 22 | bezpieczna administracja, tunelowanie, SFTP |
| Telnet | Nie | 23 | starsze systemy, testy, nienależy stosować w Internecie |
| rlogin | Nie | 513 | zdalne logowanie do systemów Unix/Linux (dziedzictwo) |
| Raw | Nie | dowolny | debugowanie/testy innych usług (SMTP, HTTP, NNTP) |
W nowoczesnych środowiskach standardem jest wyłącznie SSH-2. Pozostałe protokoły są niezabezpieczone i stosuje się je incydentalnie (np. w sieciach odizolowanych).
Konfiguracja połączenia SSH w PuTTY
Podstawową sesję SSH skonfigurujesz w kilku krokach:
- przejdź do „Session” i w „Host Name (or IP address)” wpisz domenę lub adres IP serwera,
- w polu „Port” ustaw numer portu (domyślnie 22),
- zaznacz protokół „SSH”,
- w „SSH” ustaw „Preferred SSH Protocol version: 2 only”,
- wróć do „Session”, wpisz nazwę w „Saved Sessions” i kliknij „Save”.
Wymuszenie SSH-2 eliminuje słabości legacy SSH-1 i podnosi poziom bezpieczeństwa.
Uwierzytelnianie za pomocą nazwy użytkownika i hasła
Po połączeniu zobaczysz monit „Login”. Podaj nazwę użytkownika (np. „admin”, „root”), a następnie hasło. Wpisywane znaki hasła nie są wyświetlane w terminalu — to celowy mechanizm ochrony. Hasło możesz wkleić prawym przyciskiem myszy.
Po udanym logowaniu otrzymasz prompt, np. user@hostname:~$, i możesz wykonywać komendy. Metoda hasłowa jest prosta, ale mniej bezpieczna w środowiskach produkcyjnych (ryzyko podsłuchu, ataków siłowych).
Zaawansowane uwierzytelnianie za pomocą kluczy SSH (RSA)
Uwierzytelnianie kluczami SSH jest znacząco bezpieczniejsze niż hasłem. Para kluczy składa się z klucza prywatnego (pozostaje u Ciebie) oraz klucza publicznego (umieszczanego na serwerze). Autoryzacja działa asymetrycznie — odszyfrowanie możliwe jest wyłącznie kluczem prywatnym.
Klucza prywatnego nie wolno nikomu udostępniać. Dodatkowo zabezpiecz go hasłem (passphrase), aby chronić go w razie wycieku pliku.
Generowanie i konfiguracja kluczy w Windows z użyciem PuTTYgen wygląda następująco:
- uruchom
puttygen.exe(np. wC:\Program Files\PuTTY), - wybierz typ klucza „SSH-2 RSA” i długość 2048 lub 4096 bitów,
- kliknij „Generate” i poruszaj myszą w polu entropii,
- (opcjonalnie) ustaw „Key passphrase” i „Confirm passphrase”,
- zapisz klucz publiczny („Save public key”) oraz prywatny w formacie .ppk („Save private key”).
Następnie dodaj klucz publiczny na serwerze do pliku ~/.ssh/authorized_keys. Możesz użyć poniższych poleceń na serwerze (po pierwszym logowaniu hasłem):
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys # wklej tu zawartość klucza publicznego
chmod 600 ~/.ssh/authorized_keys
Aby wskazać klucz prywatny w PuTTY, przejdź do Connection → SSH → Auth i wskaż plik .ppk w „Private key file for authentication”, a następnie zapisz sesję.
Po poprawnym wdrożeniu kluczy logowanie jest wygodniejsze i znacznie trudniejsze do złamania niż w przypadku samych haseł.
Zaawansowana konfiguracja i funkcje PuTTY
PuTTY oferuje szereg funkcji zwiększających bezpieczeństwo, wygodę i elastyczność pracy:
- Port Forwarding – bezpieczne tunelowanie ruchu przez SSH (ochrona usług dostępnych tylko lokalnie);
- X11 Forwarding – uruchamianie aplikacji graficznych z serwera i wyświetlanie ich lokalnie;
- Proxy Support – łączenie przez proxy/ SOCKS w środowiskach korporacyjnych lub z ograniczonym dostępem;
- Pageant (agent kluczy) – przechowywanie kluczy w pamięci i automatyczne uwierzytelnianie bez podawania passphrase za każdym razem;
- Session Logging – rejestrowanie przebiegu sesji do pliku (audyt, debugowanie, dokumentacja).
Tunelowanie SSH szyfruje ruch między hostami i pozwala bezpiecznie korzystać z usług niedostępnych publicznie.
Transfer plików przy użyciu PuTTY
Narzędzia dostępne z PuTTY do bezpiecznego transferu plików to:
- PSCP – narzędzie CLI do kopiowania plików (odpowiednik scp);
- PSFTP – interaktywny klient SFTP, wygodny do nawigacji po katalogach i zarządzania plikami;
- WinSCP – graficzny klient SFTP/SCP dla Windows z obsługą drag and drop i integracją sesji PuTTY.
Przykład wysyłki pliku komendą PSCP (z kluczem prywatnym):
pscp -i D:\secure\myprivatekey.ppk C:\web\publish.zip username@server:/home/username/
Jeśli potrzebujesz wskazać port, użyj parametru -P:
pscp -P 22 -i D:\secure\myprivatekey.ppk C:\web\publish.zip username@server:/home/username/
Ważne: wywołanie pscp bez jawnie wskazanego portu w specyficznych konfiguracjach może skutkować próbą połączenia z portem 0. Dodanie -P 22 rozwiązuje problem.
Przykład pobierania pliku z serwera na komputer lokalny:
pscp -i D:\secure\myprivatekey.ppk username@server:/home/username/report.log C:\Users\Me\Desktop\report.log
Praktyczne polecenia systemu Linux dostępne poprzez PuTTY
Poniższa tabela prezentuje najczęściej używane polecenia i ich zastosowanie:
| Polecenie | Opis | Przykład |
|---|---|---|
ls, ls -al |
lista plików (także ukrytych) z detalami | ls -al |
cd, cd .. |
zmiana katalogu / przejście poziom wyżej | cd /var/www |
pwd |
wyświetla bieżącą ścieżkę | pwd |
mkdir, rmdir |
tworzenie/usuwanie (pustych) katalogów | mkdir logs |
rm, rm -r |
usuwanie plików/katalogów rekurencyjnie | rm -r backup_old |
cp |
kopiowanie plików/katalogów | cp /src/a.txt /dst/a.txt |
mv |
przenoszenie/zmiana nazwy | mv stary.txt nowy.txt |
touch |
utworzenie pustego pliku | touch ala.txt |
cat |
wyświetlenie zawartości pliku | cat /etc/hosts |
nano, vi |
edycja plików w terminalu | nano config.php |
grep |
wyszukiwanie wzorca w plikach | grep "error" /var/log/syslog |
mc (Midnight Commander) |
tekstowy menedżer plików | mc |
W terminalu działa autouzupełnianie poleceń klawiszem Tab, co przyspiesza pracę i redukuje literówki.
Utrzymanie aktywności połączenia SSH
Gdy serwer zrywa bezczynne sesje, włącz mechanizm keepalive. W PuTTY ustaw w „Connection” wartość „Seconds between keepalives” (np. 30), a następnie zapisz sesję.
W natywnym kliencie OpenSSH (Linux/macOS) podobny efekt osiągniesz w pliku ~/.ssh/config:
ServerAliveInterval 30
ServerAliveCountMax 2
Zabezpieczenie i wygodne logowanie bez hasła
Pageant (agent kluczy PuTTY) przechowuje klucze prywatne w pamięci i automatycznie je podaje przy połączeniach, eliminując konieczność każdorazowego wpisywania passphrase.
Możesz przygotować prosty skrypt wsadowy Windows, który uruchomi Pageant z kluczem i otworzy PuTTY:
@echo off
cd "C:\Program Files\PuTTY"
start pageant.exe klucz.ppk
start putty.exe
exit
Dostosuj ścieżki do własnej instalacji oraz nazwę pliku klucza.
Zagrożenia bezpieczeństwa i ataki man-in-the-middle (MITM)
Przy pierwszym połączeniu PuTTY poprosi o weryfikację klucza hosta (fingerprint). Zweryfikuj go z administratorem lub w innym zaufanym źródle — to minimalizuje ryzyko MITM.
Komunikat może wyglądać następująco:
The server’s host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server’s rsa2 key fingerprint is: ssh-rsa 1024 52:2a:b3:92:a6:88:ca:c0:ff:c2:1b:d1:53:11:fc:4e
Jeśli odcisk się zgadza, kliknij „Yes”, aby zapisać klucz w rejestrze. Zmiana klucza przy kolejnych połączeniach generuje ostrzeżenie — sprawdź ją, bo może oznaczać atak lub zmianę konfiguracji serwera.
Rozwiązywanie problemów i debugowanie połączeń SSH
Najczęstsze kłopoty z połączeniem i ich przyczyny obejmują:
- Connection refused – na porcie nie nasłuchuje usługa SSH (sprawdź uruchomienie i port, domyślnie 22);
- Timeout – filtracja w zaporze, błędne trasy lub problemy sieciowe (zweryfikuj firewall/ACL/VPN);
- Authentication failed – błędne dane logowania lub brak klucza w
authorized_keys(sprawdź uprawnienia plików i poprawność klucza).
Do diagnozy włącz logowanie/verbose w ustawieniach SSH w PuTTY, aby zobaczyć szczegółowy przebieg wymiany i ustalić etap, na którym występuje błąd.
Porównanie PuTTY z innymi narzędziami i protokołami
SSH z PuTTY to złoty standard bezpiecznego dostępu zdalnego. Telnet i rlogin nie szyfrują ruchu, dlatego nie powinny być używane w niezaufanych sieciach. SFTP (w ramach SSH) zastępuje niezabezpieczony FTP.
W Windows dostępny jest również OpenSSH (PowerShell/CMD). Popularne alternatywy to KiTTY (fork PuTTY z dodatkami) czy MobaXterm (rozbudowany emulator terminala). PuTTY pozostaje jednak wyborem domyślnym dzięki prostocie, bezpłatności i stabilności.
Zaawansowana konfiguracja tunelowania SSH
Lokalne tunelowanie (Local Port Forwarding) mapuje lokalny port na usługę po stronie zdalnej. Konfiguracja w PuTTY przebiega tak:
- załaduj sesję i przejdź do Connection → SSH → Tunnels,
- w „Source port” wpisz port lokalny (np.
8080), - w „Destination” podaj host:port po stronie zdalnej (np.
localhost:8080), - zaznacz „Local” i kliknij „Add”,
- połącz się i używaj lokalnego portu (np. http://localhost:8080).
Zdalne tunelowanie (Remote Port Forwarding) udostępnia usługę lokalną przez serwer zdalny, co bywa przydatne przy ekspozycji lokalnego środowiska przez publiczny punkt dostępu.
Stosowanie PuTTY w praktyce
PuTTY sprawdza się w administracji serwerami WWW, zarządzaniu systemami Linux, pracy deweloperskiej i debugowaniu usług działających na hostach zdalnych. Administratorzy instalują oprogramowanie, edytują konfiguracje i automatyzują zadania. Programiści testują i diagnozują aplikacje na serwerach. Inżynierowie sieci konfigurują urządzenia przez SSH.
W projektach WordPress i e‑commerce SSH zapewnia bezpieczny dostęp do plików (np. wp-content), automatyzację wdrożeń oraz szybkie operacje na serwerze bezpośrednio z terminala lub poprzez powiązane narzędzia.