Къде се съхраняват SSH ключовете в Linux — и как да ги управлявате безопасно
SSH (Secure Shell) е един от най-критичните инструменти в екосистемата на Linux. Системните администратори, разработчиците и DevOps инженерите разчитат на него ежедневно за отдалечен достъп до сървъри, безопасни трансфери на файлове, автоматизация на разгръщането и управление на инфраструктурата. Докато повечето потребители взаимодействат с SSH чрез проста терминална команда, истинския защитен гръб се крие в SSH ключовите двойки — криптографски удостоверения, които позволяват удостоверяване без парола, автоматизирани работни процеси и укрепен контрол на достъпа.
Независимо дали управлявате един VPS Hosting екземпляр или организирате достъп в дузини Dedicated Servers, разбирането точно къде се съхраняват SSH ключовете — и как да ги управлявате правилно — не е по избор. Това е основно изискване за безопасност.
Това ръководство обхваща всичко: местоположения на съхранение на ключове по подразбиране, системни хост ключове, персонализирани конфигурации, изисквания за разрешения и най-добрите практики за безопасно управление на ключове.
Какво представляват SSH ключовете и защо са важни?
SSH ключовете използват асиметрична криптография за удостоверяване на потребители и сървъри. Всяка двойка ключове се състои от:
- Частен ключ — съхранява се в тайна на клиентската машина, никога не се споделя
- Публичен ключ — поставя се на отдалечения сървър за проверка на идентичност
Когато се свържете със сървър, SSH използва криптографски handshake за проверка, че притежавате частния ключ, съответстващ на публичния ключ на сървъра — без никога да предавате самия частен ключ. Това е фундаментално по-безопасно от удостоверяването на базата на пароли.
Местоположение на хранилище на SSH ключове по подразбиране (потребителски ключове)
За всеки стандартен Linux потребител SSH ключовете се съхраняват в скрита директория в началната папка:
~/.ssh/Това се разширява до пълния път:
/home/username/.ssh/За root потребителя специално:
/root/.ssh/Често срещани файлове вътре в ~/.ssh/
| Файл | Предназначение |
|---|---|
id_rsa | Частен ключ RSA по подразбиране |
id_rsa.pub | Съответстващ публичен ключ RSA |
id_ecdsa | Частен ключ ECDSA |
id_ed25519 | Частен ключ Ed25519 (препоръчан) |
id_*.pub | Публичен ключ за всеки частен ключ |
authorized_keys | Списък на публичните ключове, разрешени да влизат в този акаунт |
known_hosts | Отпечатъци на предварително свързани сървъри |
config | Конфигурация на SSH клиент, специфична за потребителя |
Когато изпълните ssh-keygen, ключовете се записват в тази директория по подразбиране, освен ако не посочите изрично различен път по време на генериране на ключове.
Системни SSH ключови местоположения (Host Keys)
Освен потребителските ключове, SSH daemon (sshd) — компонентата на сървърната страна — поддържа свой собствен набор от host ключове. Те се съхраняват системно на:
/etc/ssh/Host ключови файлове в /etc/ssh/
| Файл | Назначение |
|---|---|
ssh_host_rsa_key | RSA host частен ключ |
ssh_host_rsa_key.pub | RSA host публичен ключ |
ssh_host_ecdsa_key | ECDSA host частен ключ |
ssh_host_ecdsa_key.pub | ECDSA host публичен ключ |
ssh_host_ed25519_key | Ed25519 host частен ключ |
ssh_host_ed25519_key.pub | Ed25519 host публичен ключ |
Тези host ключове служат на различна цел от потребителските ключове. Когато клиент се свърже със сървър за първи път, сървърът представя своя host публичен ключ. Клиентът съхранява този отпечатък в ~/.ssh/known_hosts. При следващи свързвания, SSH проверява дали отпечатъкът съответства — защитавайки срещу атаки от човек в средата.
> Важно: Host ключовете се генерират автоматично при инсталиране на SSH сървър. Никога не трябва да ви е необходимо да ги създавате ръчно, но трябва да знаете къде се намират за одит и резервни копия.
Custom SSH Key Locations
Не сте ограничени до директорията по подразбиране ~/.ssh/. SSH ключовете могат да бъдат генерирани и съхранявани навсякъде в файловата система. За да използвате ключ съхранен в неподразбирано място, посочете го изрично:
ssh -i /path/to/custom_key user@hostИзползване на ~/.ssh/config за множество ключове
Управлението на множество сървъри, проекти или потребителски акаунти става много по-чисто с правилно конфигуриран файл ~/.ssh/config. Това ви позволява да дефинирате настройки за всеки хост, включително кой ключ да се използва:
Host production-server
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/production_ed25519
Host staging-server
HostName 203.0.113.20
User deploy
IdentityFile ~/.ssh/staging_ed25519
Host github.com
User git
IdentityFile ~/.ssh/github_keyС тази конфигурация, изпълнението на ssh production-server автоматично използва правилния ключ без никакви допълнителни флагове.
Как се използват SSH ключове: Клиент срещу сървър
Изходящи връзки (страна на клиента)
Когато инициирате SSH връзка, SSH клиентът търси частни ключове в ~/.ssh/ по подразбиране. Тези ключове се използват за удостоверяване на вас към отдалечения сървър.
Инструменти, които използват SSH клиентски ключове, включват:
ssh— преки достъп до отдалечена обвивкаscp— сигурно копиране на файловеrsync— синхронизиране на файлове през SSHgit— при използване на SSH-базирани отдалечени хранилища
Входящи връзки (страна на сървъра)
На сървъра SSH проверява конкретен файл, за да определи кои потребители са оторизирани да се свързват:
~/.ssh/authorized_keysТози файл съдържа един публичен ключ на ред. Всеки запис дава на притежателя на съответния частен ключ разрешение да влезе като този потребител.
Практически пример: Ако потребител alice иска да SSH в сървър като потребител webadmin, публичният ключ на Alice трябва да присъства в /home/webadmin/.ssh/authorized_keys — не в собствената начална директория на Alice на този сървър.
Разрешения за файлове — Критично за SSH сигурност
Това е място, където много администратори допускат скъпи грешки. SSH е намерено строг относно разрешенията за файлове. Ако разрешенията са твърде отворени, SSH ще мълчаливо откаже да използва вашите ключове или ще отхвърли опитите за вход напълно.
Необходими настройки на разрешенията
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/configТаблица за справка на разрешенията
| Път | Необходимо разрешение | Октално |
|---|---|---|
~/.ssh/ | Четене/писане/изпълнение само на собственика | 700 |
~/.ssh/authorized_keys | Четене/писане само на собственика | 600 |
~/.ssh/id_rsa (частен ключ) | Четене/писане само на собственика | 600 |
~/.ssh/id_rsa.pub (публичен ключ) | Четене на собственика, четене на други | 644 |
~/.ssh/config | Четене/писане само на собственика | 600 |
За да коригирате разрешенията с една команда:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/* && chmod 644 ~/.ssh/*.pubГенериране на SSH ключове безопасно
Винаги предпочитайте Ed25519 пред RSA за нови ключове. Ed25519 предлага по-силна сигурност с по-малки размери на ключовете и по-бърза производителност.
ssh-keygen -t ed25519 -C "your_email@example.com"За наследствени системи, които изискват RSA, използвайте поне 4096 бита:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Винаги задайте парола когато бъдете подканени. Парола шифрира частния ключ на диска, така че дори ако нападател получи достъп до вашата файлова система, той не може да използва ключа без парола.
Управление на ключове със ssh-agent
Въвеждането на вашата парола всеки път, когато използвате SSH ключ, става непрактично. ssh-agent решава това, като кешира декриптирани ключове в паметта за продължителността на вашата сесия.
Стартиране на ssh-agent и добавяне на ключ
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Ще бъдете подсетнати за паролата един път. След това SSH операциите използват кешираният ключ автоматично.
Полезни ssh-agent команди
# List currently loaded keys
ssh-add -l
# Remove a specific key from the agent
ssh-add -d ~/.ssh/mykey
# Remove all keys from the agent
ssh-add -DКопиране на публични ключове на отдалечени сървъри
Най-лесният начин да инсталирате вашия публичен ключ на отдалечен сървър е с ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-hostТова добавя вашия публичен ключ към ~/.ssh/authorized_keys на отдалечения сървър и автоматично задава правилните разрешения.
Ако ssh-copy-id е недостъпен, направете го ръчно:
cat ~/.ssh/id_ed25519.pub | ssh user@remote-host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Одит и отстраняване на проблеми със SSH ключове
Подробно регистриране на връзки
Когато SSH удостоверяването се провали, подробният режим разкрива точно какво се случва:
ssh -v user@hostЗа още повече детайли:
ssh -vvv user@hostТози изход показва кои файлове с идентичност са опитани, дали агентът е бил консултиран и където удостоверяването се провали.
Проверете SSH дневника на сървъра
На отдалечения сървър, SSH събитията за удостоверяване се регистрират в:
# Debian/Ubuntu
tail -f /var/log/auth.log
# CentOS/RHEL/Fedora
tail -f /var/log/secure
# Systems using journald
journalctl -u sshd -fПроверете вашия authorized_keys файл
# Check the file exists and has correct permissions
ls -la ~/.ssh/authorized_keys
# View its contents
cat ~/.ssh/authorized_keys
# Count how many keys are authorized
grep -c "ssh-" ~/.ssh/authorized_keysSSH Key Security Best Practices
Правилното управление на ключовете надвишава познаването на местоположението на файловете. Следвайте тези практики на всяка система, която управлявате:
1. Използвайте един ключ за всяка цел
Никога не преизползвайте един и същ SSH ключ в различни среди, клиенти или проекти. Използвайте отделни ключове за личен достъп, автоматизация на разгръщане и споделен достъп на екипа.
2. Ротирайте ключовете редовно
Третирайте SSH ключовете като пароли — ротирайте ги периодично, особено след напускане на членове на екипа или подозрени компрометирания.
3. Одитирайте authorized_keys файлове
Редовно преглеждайте кои публични ключове са оторизирани на всеки сървър. Премахнете всички ключове, които принадлежат на бивши служители, остаревала автоматизация или неразпознати източници:
# Find all authorized_keys files on a system
find / -name "authorized_keys" 2>/dev/null4. Деактивирайте удостоверяването с пароли
След като SSH ключовете са конфигурирани, деактивирайте напълно SSH влизането на базата на пароли в /etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-passwordРестартирайте sshd след промените:
systemctl restart sshd5. Ограничете използването на Root ключове
Избягвайте използването на root SSH ключове в множество среди. Вместо това използвайте потребителски акаунти с включен sudo с отделни ключове.
6. Използвайте удостоверяване на базата на сертификати за мащабиране
За големи инфраструктури, помислете за SSH сертификати (чрез SSH Certificate Authority) вместо управление на отделни authorized_keys записи. Това драматично опростява управлението на достъпа в много сървъри.
SSH ключове в облачни и хостинг среди
При разгръщане на сървъри в облачни или управлявани хостинг среди, управлението на SSH ключове става още по-критично. Повечето платформи — включително VPS Hosting доставчици — ви позволяват да инжектирате публичен ключ по време на предоставяне, което ви дава незабавен защитен достъп без никога да задавате парола.
За екипи, управляващи множество среди, помислете да комбинирате вашата SSH ключова стратегия със структурирана VPS Control Panels настройка, която може да опрости управлението на потребители и контрола на достъпа в цялата ваша инфраструктура.
Ако управлявате уеб приложения или услуги, които изискват защитена комуникация извън SSH, комбинирането на вашата настройка на сървър с правилно конфигурирани SSL Certificates осигурява криптиране от край до край за целия трафик — не само за административния достъп.
За екипи, които разчитат на Email Hosting наред със своята сървърна инфраструктура, управлението на SSH ключове се разширява до защита на системите, които обработват вашата поща — още една причина защо последователната ключова хигиена във всички сървъри е важна.
Бърз справочник: Местоположения на SSH ключови файлове
| Местоположение | Тип | Предназначение |
|---|---|---|
~/.ssh/id_ed25519 | Приватен ключ на потребител | Удостоверяване на клиент |
~/.ssh/id_ed25519.pub | Публичен ключ на потребител | Разпространение на сървъри |
~/.ssh/authorized_keys | Упълномощени публични ключове | Контролира кой може да влезе |
~/.ssh/known_hosts | Отпечатъци на сървър | Предотвратява MITM атаки |
~/.ssh/config | Конфигурация на клиент | Настройки за всеки хост |
/etc/ssh/ssh_host_* | Ключове на хост | Идентичност на сървър |
/etc/ssh/sshd_config | Конфигурация на демон | Настройки на SSH сървър |
Заключение
Разбирането къде се съхраняват SSH ключовете в Linux — и управлението им с дисциплина — е един от най-важните умения за всеки, който работи със сървъри, независимо дали сте самостоятелен разработчик или част от голям операционен екип.
За да обобщим ключовите моменти:
- Потребителските ключове се намират в
~/.ssh/и се използват за удостоверяване от страна на клиента - Хост ключовете се намират в
/etc/ssh/и идентифицират сървъра на свързващите се клиенти authorized_keysконтролира входящия достъп — одитирайте го редовно- Разрешенията на файловете са неотложни — неправилните разрешения мълчаливо разрушават SSH
- Ed25519 е предпочитаният тип ключ за генериране на нови ключове
- Винаги използвайте парольни фрази и
ssh-agentза ежедневното управление на ключове - Ротирайте и одитирайте ключовете като част от вашата редовна хигиена на сигурност
На производствени системи — независимо дали управлявате Dedicated Servers или споделена инфраструктура — неправилното управление на SSH ключовете е един от най-честите вектори за неоторизиран достъп. Инвестицията на време в правилното решаване на това дава дивиденти в сигурност, надеждност и спокойствие.
Третирайте SSH ключовете си със същата грижа, която бихте дали на всеки критичен идентификационен данни. Защото точно това са те.
от всички хостинг услуги