---
title: "Jak dodać klucz SSH w systemie Linux? Generowanie i konfiguracja krok po kroku"
description: "Wygeneruj klucz SSH poleceniem ssh-keygen, dodaj klucz publiczny na serwer Linux i zaloguj się bez hasła. Komendy do skopiowania, RSA vs ED25519, uprawnienia."
url: "https://nodea.pl/pl/dokumentacja/jak-dodac-klucz-ssh-linux"
lang: "pl"
updated: "2026-07-13"
---

# Jak dodać klucz SSH w systemie Linux? Generowanie i konfiguracja krok po kroku

> Praktyczny przewodnik: jak wygenerować klucz SSH poleceniem ssh-keygen, dodać klucz publiczny na serwer Linux i zalogować się bez hasła — z gotowymi komendami.

Ten poradnik piszemy z perspektywy praktyka — w Nodea codziennie konfigurujemy dostęp SSH na serwerach Bare Metal i Public Cloud w ramach usługi administracji Linux. Pokażemy krok po kroku, jak na Ubuntu, Debianie i CentOS wygenerować parę kluczy, dodać klucz publiczny na serwer i przetestować logowanie bez hasła. Wszystkie komendy są gotowe do skopiowania.

## Co to jest klucz SSH i jak działa logowanie kluczem?

Klucz SSH to para plików — klucz publiczny i klucz prywatny — która pozwala zalogować się na serwer Linux bez podawania hasła. Klucz SSH zastępuje logowanie hasłem i jest odporny na ataki siłowe, bo klucza kryptograficznego nie da się zgadnąć. Para dzieli się na dwa pliki:

- **klucz publiczny** umieszczasz na serwerze i możesz go swobodnie udostępniać,
- **klucz prywatny** zostaje na Twoim komputerze i nigdy nikomu go nie udostępniasz.

Sam SSH (protokół SSH) to szyfrowane połączenie z serwerem — logowanie kluczem jest w nim bezpieczniejsze niż hasłem. Mechanizm działa prosto: serwer przechowuje Twój klucz publiczny, a przy logowaniu sprawdza, czy posiadasz pasujący klucz prywatny. Jeśli oba pliki do siebie pasują, serwer wpuszcza Cię bez pytania o hasło — bez wysyłania jakiegokolwiek sekretu przez sieć.

Stąd odpowiedź na trzy typowe pytania. Klucz publiczny SSH to plik id\_rsa.pub, który umieszczasz na serwerze i możesz udostępniać. Klucz prywatny (id\_rsa) zostaje u Ciebie i jest tajny. A dlaczego to bezpieczniejsze niż hasło? Hasło można złamać atakiem siłowym, klucza prywatnego o długości tysięcy bitów — nie. Więcej o samym protokole znajdziesz w naszym haśle [SSH](https://nodea.pl/pl/slownik-pojec/ssh).

## Wygeneruj klucz SSH poleceniem ssh-keygen

Jak wygenerować klucz SSH na Linuxie? Otwórz terminal i wpisz polecenie *ssh-keygen -t rsa -b 4096* — utworzy ono parę kluczy 4096-bitowych w katalogu ~/.ssh. Podstawowa i rozszerzona wersja komendy wyglądają tak:

- *ssh-keygen* — wersja podstawowa, z domyślnymi parametrami,
- *ssh-keygen -t rsa -b 4096 -C "twoj\_email@domena.com"* — z wybranym typem, długością i komentarzem.

Parametry oznaczają kolejno: *-t rsa* to typ klucza (algorytm RSA), *-b 4096* to długość w bitach, a *-C* dodaje komentarz (najczęściej e-mail) ułatwiający później rozpoznanie klucza. Komentarz jest opcjonalny.

Podczas generowania system zada dwa pytania. Najpierw o lokalizację pliku — domyślnie ~/.ssh/id\_rsa, zatwierdź Enterem. Potem o hasło do klucza (passphrase), które również możesz zostawić puste. W terminalu zobaczysz mniej więcej to:

- *Enter file in which to save the key (/home/user/.ssh/id\_rsa):*
- *Enter passphrase (empty for no passphrase):*
- *Your identification has been saved in /home/user/.ssh/id\_rsa*
- *Your public key has been saved in /home/user/.ssh/id\_rsa.pub*

Po zakończeniu w katalogu ~/.ssh znajdziesz dwa pliki: klucz prywatny *id\_rsa* oraz klucz publiczny *id\_rsa.pub*. RSA to nie jedyny typ klucza — dostępne komendy SSH to także ssh-copy-id (kopiowanie na serwer) i ssh (łączenie), które opisujemy w kolejnych sekcjach. Wybór algorytmu rozwijamy niżej.

### Sprawdź, czy nie masz już klucza SSH

Zanim wygenerujesz nowy klucz SSH, sprawdź, czy już go nie masz — wpisz *ls -al ~/.ssh* w terminalu. Polecenie wypisze zawartość katalogu z kluczami.

- Jeśli w wyniku widzisz pliki *id\_rsa* i *id\_rsa.pub* (albo id\_ed25519 i id\_ed25519.pub) — klucz już istnieje.
- Generowanie nowego klucza w tej samej lokalizacji nadpisze stary bez ostrzeżenia — wtedy dostęp oparty na poprzednim kluczu przestanie działać.

Jeśli klucz już masz i nadal go używasz, przejdź od razu do sekcji o kopiowaniu klucza publicznego na serwer.

### Ustaw hasło do klucza prywatnego (passphrase)

Hasło do klucza prywatnego (passphrase) chroni Twój klucz, gdyby plik id\_rsa dostał się w niepowołane ręce — bez hasła nikt go nie użyje. Passphrase podajesz podczas generowania, w odpowiedzi na pytanie *Enter passphrase*.

- Passphrase jest opcjonalne, ale zalecane na stacjach roboczych.
- Bez hasła każdy, kto zdobędzie plik klucza prywatnego, zaloguje się na Twój serwer.
- Pole zostaw puste (sam Enter), jeśli klucz ma działać w automatyzacji, np. w skryptach wdrożeniowych czy zadaniach cron, gdzie nikt nie wpisze hasła ręcznie.

## Jakie typy kluczy SSH wybrać — RSA czy ED25519?

Klucz SSH występuje w dwóch popularnych typach: RSA (minimum 2048 bitów, zalecane 4096) oraz ED25519 (stała długość 256 bitów). ED25519 jest nowszy i szybszy, RSA jest szerzej obsługiwany przez starsze systemy. Komendy generujące oba typy to:

- RSA: *ssh-keygen -t rsa -b 4096*
- ED25519: *ssh-keygen -t ed25519*

Poniższa tabela pomoże wybrać właściwy typ:

- **RSA** — długość 2048 lub 4096 bitów; wolniejszy; maksymalna kompatybilność, także ze starszymi serwerami; wybierz, gdy potrzebujesz pewności, że klucz zadziała wszędzie.
- **ED25519** — stała długość 256 bitów; szybszy i z krótszym kluczem przy porównywalnym bezpieczeństwie; wybierz dla nowych systemów i współczesnych dystrybucji Linuksa.

Rekomendacja w dwóch zdaniach: dla nowych serwerów wybierz ED25519 — jest szybszy i nowocześniejszy. Gdy musisz obsłużyć starsze systemy lub urządzenia sieciowe, zostań przy SSH RSA o długości 4096 bitów.

## Dodaj klucz publiczny na serwer Linux

Aby dodać klucz SSH na serwer Linux, skopiuj klucz publiczny do pliku ~/.ssh/authorized\_keys na serwerze — najprościej poleceniem *ssh-copy-id user@adres\_ip\_serwera*. Komenda sama utworzy katalog .ssh, dopisze klucz i ustawi uprawnienia.

W miejsce *user* wstaw nazwę użytkownika na serwerze, a w miejsce *adres\_ip\_serwera* — adres IP lub nazwę hosta. Metoda automatyczna wygląda tak:

1. Wpisz *ssh-copy-id user@adres\_ip\_serwera*.
2. Podaj hasło do konta na serwerze (to ostatni raz, gdy je wpisujesz).
3. ssh-copy-id skopiuje Twój klucz publiczny SSH do pliku authorized\_keys na serwerze.

Jeśli ssh-copy-id nie jest dostępne (spotyka się to na minimalnych obrazach serwera), skopiuj klucz ręcznie jednym poleceniem:

- *cat ~/.ssh/id\_rsa.pub | ssh user@adres\_ip\_serwera "mkdir -p ~/.ssh && cat \>\> ~/.ssh/authorized\_keys"*

Ta komenda wysyła zawartość pliku *id\_rsa.pub* przez SSH i dopisuje go do authorized\_keys, tworząc wcześniej katalog ~/.ssh, jeśli go nie było. Obie metody prowadzą do tego samego efektu: Twój klucz publiczny SSH trafia do pliku *~/.ssh/authorized\_keys* na serwerze, czyli listy kluczy, którym serwer ufa. Poprawna konfiguracja tego pliku to standard, który w Nodea wdrażamy na serwerach Bare Metal i Public Cloud. Jeśli obok SSH kopiujesz też pliki, zobacz, jak [połączyć się z kontem FTP](https://nodea.pl/pl/dokumentacja/konto-ftp).

## Ustaw poprawne uprawnienia do katalogu i pliku klucza

Serwer SSH odmówi logowania kluczem, jeśli katalog ~/.ssh i plik authorized\_keys mają zbyt luźne uprawnienia — ustaw *chmod 700 ~/.ssh* oraz *chmod 600 ~/.ssh/authorized\_keys*. Wykonaj obie komendy na serwerze:

1. *chmod 700 ~/.ssh* — katalog dostępny tylko dla właściciela.
2. *chmod 600 ~/.ssh/authorized\_keys* — plik z kluczami do odczytu i zapisu wyłącznie przez właściciela.

Demon SSH świadomie odrzuca klucze, gdy uprawnienia są zbyt szerokie — to zabezpieczenie przed sytuacją, w której inny użytkownik serwera mógłby dopisać własny klucz. To najczęstszy powód, dla którego „wszystko zrobiłem, a klucz nie działa". Zdanie diagnostyczne do zapamiętania: jeśli logowanie prosi o hasło mimo dodanego klucza — sprawdź uprawnienia katalogu ~/.ssh i pliku authorized\_keys.

## Przetestuj logowanie SSH kluczem bez hasła

Aby sprawdzić, czy klucz SSH działa, połącz się z serwerem poleceniem *ssh user@adres\_ip\_serwera* — jeśli konfiguracja jest poprawna, zalogujesz się bez podawania hasła. Logowanie SSH kluczem powinno przebiec błyskawicznie i od razu wrzucić Cię do powłoki serwera.

- **Sukces** to zalogowanie bez pytania o hasło serwera (jeśli klucz nie ma passphrase).
- Jeśli ustawiłeś passphrase, system poprosi o hasło do klucza — **nie** o hasło serwera. To istotna różnica.
- Jeśli serwer nadal pyta o hasło serwera mimo dodanego klucza, wróć do sekcji o uprawnieniach i sprawdź chmod na ~/.ssh oraz authorized\_keys.

Ta różnica myli początkujących: „hasło serwera" to hasło konta na serwerze, a „hasło do klucza (passphrase)" to hasło szyfrujące lokalny plik id\_rsa. Jeśli po dodaniu klucza system prosi o passphrase, to znaczy, że klucz DZIAŁA — pyta o hasło do klucza, nie do serwera. Samo połączenie SSH z kontem opisaliśmy szerzej w haśle [SSH](https://nodea.pl/pl/slownik-pojec/ssh).

## Skonfiguruj plik ~/.ssh/config i ssh-agent dla wygody

Plik *~/.ssh/config* pozwala logować się na serwer krótkim aliasem zamiast pełnej komendy — zamiast *ssh user@192.168.0.255* wpiszesz *ssh mojserwer*. Wystarczy dopisać do pliku config kilka linii:

- *Host mojserwer*
- *HostName 192.168.0.255*
- *User user*
- *IdentityFile ~/.ssh/id\_rsa*

Pola oznaczają kolejno: *Host* to alias, którego użyjesz w komendzie, *HostName* to adres IP lub nazwa serwera, *User* to nazwa użytkownika, a *IdentityFile* to ścieżka do klucza prywatnego. Od tej chwili logujesz się komendą *ssh mojserwer*.

Drugie udogodnienie to ssh-agent — narzędzie przechowujące hasło do klucza prywatnego w pamięci, żebyś nie wpisywał passphrase przy każdym logowaniu. Uruchom je i dodaj klucz dwiema komendami:

1. *eval "$(ssh-agent -s)"* — startuje agenta w bieżącej sesji terminala.
2. *ssh-add ~/.ssh/id\_rsa* — dodaje klucz prywatny do agenta (podasz passphrase raz).

Od tego momentu ssh-agent podaje hasło do klucza za Ciebie aż do zamknięcia sesji. Jeśli konfigurujesz też dostęp z Windowsa, zobacz, jak [dodać klucz SSH przy pomocy PuTTy w Windows](https://nodea.pl/pl/dokumentacja/jak-dodac-klucz-ssh-windows). Potrzebujesz pomocy przy konfiguracji serwera? Nodea oferuje usługę administracji Linux — zajmiemy się SSH, zaporą i całą konfiguracją za Ciebie.

### Jak włączyć SSH w Linux?

Zainstaluj pakiet openssh-server, a następnie uruchom usługę: na Ubuntu i Debianie poleceniem sudo systemctl start ssh, na CentOS i RHEL sudo systemctl start sshd. To startuje demona SSH po stronie serwera i dopiero wtedy możesz logować się kluczem.

### Jakie są podstawowe komendy SSH w systemie Linux?

Najważniejsze to: ssh-keygen (generowanie klucza), ssh-copy-id (kopiowanie klucza na serwer) i ssh (łączenie z serwerem). Do tego ssh-add dodaje klucz prywatny do ssh-agent, żeby nie wpisywać hasła za każdym razem.

### Jak połączyć się za pomocą SSH?

Wpisz w terminalu ssh user@adres\_ip\_serwera, podstawiając nazwę użytkownika i adres serwera. Jeśli masz dodany klucz publiczny w authorized\_keys, zalogujesz się bez podawania hasła do serwera.

### Jaki jest klucz publiczny SSH i gdzie go znaleźć?

Klucz publiczny SSH to plik id\_rsa.pub w katalogu ~/.ssh, który możesz udostępniać i umieszczać na serwerach. Podejrzysz jego zawartość poleceniem cat ~/.ssh/id\_rsa.pub.

### Czy jeden klucz SSH może działać na wielu serwerach?

Tak, tę samą parę kluczy SSH dodasz na wiele serwerów. Wystarczy skopiować ten sam klucz publiczny do pliku authorized\_keys na każdym z nich — klucz prywatny cały czas zostaje na Twoim komputerze.

### Co zrobić, gdy zgubię klucz prywatny SSH?

Wygeneruj nową parę kluczy i dodaj nowy klucz publiczny na serwer, a stary wpis usuń z authorized\_keys. Klucza prywatnego nie da się odzyskać ani odtworzyć z publicznego — trzeba utworzyć nowy.

## Powiązane

- [Jak dodać klucz SSH przy pomocy PuTTy w Windows?](https://nodea.pl/pl/dokumentacja/jak-dodac-klucz-ssh-windows)
- [Konto FTP](https://nodea.pl/pl/dokumentacja/konto-ftp)
- [Jak podpiąć domenę do hostingu](https://nodea.pl/pl/dokumentacja/jak-podpiac-domene-do-hostingu)
- [SSH](https://nodea.pl/pl/slownik-pojec/ssh)
- [Klucz SSH](https://nodea.pl/pl/slownik-pojec/klucz-ssh)

---

Wersje językowe: [en](https://nodea.io/en/docs/how-to-add-ssh-key-linux.md)  
Spis treści witryny: [llms.txt](https://nodea.pl/pl/llms.txt)
