Модул 2 · 2.1
Създаване и използване на SSH ключове
Модул 2: SSH и ключове · Време за четене: 10 минути
Цел на урока: След този урок ще можете да създадете ключова двойка, да поставите публичния ключ на Вашия сървър, да влизате без парола и да пазите частния си ключ така, че един загубен лаптоп да не се превърне в бедствие.
Основни понятия: ключова двойка, публичен ключ, частен ключ, ed25519, RSA, passphrase, ssh-agent, ssh-copy-id, authorized_keys, права 700 и 600, ключ за всяко устройство, FIDO2 ключ
Защо ключовете са по-добри от паролите
В урок 1.3 влязохте с парола. Това работи, но един сървър в интернет още от първата минута получава посещения от програми, които налучкват пароли. Погледнете лога на току-що инсталиран сървър:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Стотици опити на час са нещо нормално. Една силна парола ги спира, но Вие сте създали слабо място, от което нямате нужда. Със SSH ключ налучкването е безсмислено: няма нищо за отгатване, което да стои в някой речник.
Ключът се състои от две части, които си принадлежат, т.нар. ключова двойка:
- Частният ключ остава на Вашия собствен компютър. Който има този файл (и знае passphrase), може да влезе. Не го споделяйте с никого, дори с Вашия доставчик или с някое бюро за поддръжка.
- Публичният ключ давате на сървъра. Той може да бъде видян от всеки: с него не можете да влезете, само да проверявате.
При влизане сървърът не изпраща парола по линията. Вашият компютър доказва с подпис, че притежава частния ключ, а сървърът проверява този подпис с публичния ключ. Дори някой да наблюдава мрежата, той не вижда нищо, което да може да използва по-късно.
Създаване на ключ
Създавате ключа на Вашия собствен компютър, а не на сървъра. В Windows 10 и 11, macOS и Linux ssh-keygen вече е наличен. Отворете PowerShell или Terminal:
anna@laptop:~$ ssh-keygen -t ed25519 -C "anna@laptop 2026"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/anna/.ssh/id_ed25519):
Enter passphrase for "/home/anna/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/anna/.ssh/id_ed25519
Your public key has been saved in /home/anna/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026Какво се случва тук?
-t ed25519избира типа. Ed25519 е кратък, бърз и сигурен, а от OpenSSH 9.5 е и типът по подразбиране, ако не посочите нищо. Ако трябва да обслужвате стара система, която не познава ed25519, използвайте RSA с поне 3072 бита:ssh-keygen -t rsa -b 4096. По-старите типове като DSA са премахнати от OpenSSH; не ги използвайте.-Cе само коментар. Напишете нещо, по което по-късно да разберете от кое устройство е ключът. Това помага изключително много, когато трябва да оттеглите ключ.- Passphrase криптира частния ключ на Вашия диск. Ако лаптопът Ви бъде откраднат, крадецът ще има криптиран файл. Без passphrase той веднага получава достъп до всички Ваши сървъри.
Сега имате два файла:
| Файл | Какво е | Споделяне? |
|---|---|---|
~/.ssh/id_ed25519 | Частен ключ | Никога |
~/.ssh/id_ed25519.pub | Публичен ключ, един ред текст | Да, към сървъра |
В Windows те се намират в C:\Users\anna\.ssh\. Публичният ключ е един ред, който започва с ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Поставяне на публичния ключ на сървъра
Сървърът търси публични ключове във файла ~/.ssh/authorized_keys на потребителя, с който влизате. Всеки ред е един ключ. Има три начина да поставите ключа си там:
1. При инсталацията. Повечето доставчици предлагат поле за Вашия публичен ключ при създаването или преинсталирането на VPS. При WebOké това поле се казва "SSH ключ" в екрана на VPS; при други доставчици работи по подобен начин. Това е най-добрият начин: тогава никога не е нужно да има включено влизане с парола.
2. С ssh-copy-id (macOS и Linux), докато влизането с парола все още работи:
anna@laptop:~$ ssh-copy-id anna@192.0.2.10
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
anna@192.0.2.10's password:
Number of key(s) added: 13. Ръчно, например от Windows или чрез конзолата на Вашия доставчик. Поставете реда от Вашия файл .pub в authorized_keys и задайте правилните права:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysТези права не са подробност. SSH сървърът ги проверява (настройката StrictModes е включена по подразбиране): ако други потребители могат да пишат във Вашата папка .ssh или в домашната Ви папка, той пренебрегва ключовете Ви. Тогава просто отново виждате запитване за парола, без ясно съобщение за грешка. Как се четат права, ще научите в урок 3.1.
След това тествайте в нов прозорец:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Сега запитването идва от Вашия собствен компютър (passphrase на ключа Ви), а не вече от сървъра.
ssh-agent: отключване само веднъж
Въвеждането на passphrase всеки път е неудобно. ssh-agent пази отключения Ви ключ в паметта, докато сте влезли в компютъра си:
anna@laptop:~$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/anna/.ssh/id_ed25519:
Identity added: /home/anna/.ssh/id_ed25519 (anna@laptop 2026)
anna@laptop:~$ ssh-add -l
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)В macOS агентът се свързва с Keychain, а в Windows това е услугата "OpenSSH Authentication Agent" (включва се еднократно в Services). Така имате удобството да не въвеждате парола, а ключът на диска остава криптиран.
Внимавайте с agent forwarding (ssh -A): с него сървърът, на който влизате, може да използва Вашия агент. Който е root на този сървър, може тогава да продължи нататък с Вашия ключ. Използвайте го само на сървъри, на които имате пълно доверие, или използвайте ProxyJump (урок 2.3).
Един ключ за всяко устройство и знание кой къде е
Честа грешка: един и същ частен ключ се копира на лаптоп, компютър и телефон. Ако загубите едно устройство, трябва да смените ключа навсякъде и да настроите всички устройства наново. По-добре:
- създайте отделен ключ на всяко устройство, с ясен коментар (
-C "anna@telefoon"); - поставете всички публични ключове в
authorized_keys, по един на ред; - ако загубите устройство, премахнете само този един ред.
Редовно проверявайте кои ключове имат достъп:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Ако там има ключ, който не разпознавате, това е сигнал за тревога (урок 10.3). Нападателите обичат да поставят собствен ключ в authorized_keys, за да могат да се върнат по-късно.
Хардуерен ключ (FIDO2, например YubiKey) също е възможен. С ssh-keygen -t ed25519-sk тайната част се намира в самия ключ и трябва да го докосвате при всяко използване. Тогава един откраднат файл е безполезен. Това е хубава следваща стъпка, но не е необходима за начало.
Загубили сте частния си ключ?
Ако загубите единствения си частен ключ, а влизането с парола е изключено, няма да можете да влезете през SSH. Затова:
- винаги поставяйте поне два ключа на сървъра (например от лаптоп и от настолен компютър);
- знайте как работи конзолата на Вашия доставчик (урок 1.2). Там влизате все едно сте закачили клавиатура към сървъра и това работи и без SSH. При WebOké това се казва Console в екрана на VPS; други доставчици го наричат VNC конзола, уеб конзола или аварийна конзола.
В AlmaLinux и Rocky Linux
Всичко в този урок работи по същия начин. Един допълнителен капан: при включен SELinux ~/.ssh трябва да има правилния етикет за сигурност. Ако сте създали или копирали папката ръчно и ключът Ви бъде пренебрегнат, restorecon -Rv ~/.ssh поправя това.
Обобщение
- Ключовата двойка се състои от частен ключ (остава при Вас) и публичен ключ (отива на сървъра, в
~/.ssh/authorized_keys). - Създавайте ключове с
ssh-keygen -t ed25519на собствения си компютър, с passphrase; използвайте ssh-agent за удобство. - Правата имат значение:
~/.sshна 700 иauthorized_keysна 600, иначе сървърът пренебрегва ключа Ви. - Един ключ за всяко устройство, с ясен коментар, за да можете да оттеглите само един.
- Осигурете си втори ключ и познавайте конзолата на Вашия доставчик като авариен вход.
Тест (quiz)
Задача
Задача O2.1: Създаване и използване на ключ. Създайте на собствения си компютър ed25519 ключ с passphrase и ясен коментар, поставете го на сървъра си (чрез полето на Вашия доставчик, ssh-copy-id или ръчно), проверете правата и влезте с ключа в нов прозорец. След това въведете пръстовия отпечатък на ключа си (от ssh-keygen -lf ~/.ssh/id_ed25519.pub) и отговорете на въпросите къде се намира частният Ви ключ и какво ще направите, ако го загубите. Програмата проверява само дали пръстовият отпечатък има правилния формат; останалото правите сами.
Задача O2.1: Създаване и използване на ключ
Тази задача изпълнявате сами; никой не я проверява. Отбележете какво сте направили и маркирайте задачата като изпълнена.
Частният ключ остава на Вашето собствено устройство, шифрован с passphrase, а не в облачна папка или в имейл. При кражба премахнете реда за това устройство от authorized_keys на всеки сървър и създайте нов ключ. Никога не поставяйте частния си ключ, включително и тук.
Вашите отметки и бележки остават само в този браузър; не ги изпращаме никъде. Ако сте влезли, в Моите курсове запазваме само че сте изпълнили задачата.
Още за четене
Стъпките в тези статии се отнасят за екрана на VPS и панелите на WebOké; при други доставчици работи по подобен начин.
- Вход във Вашия VPS чрез SSH (и създаване на SSH ключ)
- Ръководство за DirectAdmin 15.2: SSH Keys и вход чрез SSH
- Нямате повече достъп до Вашия VPS: какво да направите?
- Ръководство за ssh-keygen: https://man.openbsd.org/ssh-keygen
- Бележки към версия OpenSSH 9.5 (ed25519 по подразбиране): https://www.openssh.org/txt/release-9.5
- Отнемане на SSH достъпа до Вашия VPS за бивш служител или при изгубен лаптоп
- VPS: от първото влизане до сигурен сървър 2.2: Създаване на SSH ключ в Windows, Mac и Linux
- VPS: от първото влизане до сигурен сървър 2.3: Качване на Вашия ключ на сървъра и тестване
