🔐 Генериране и управление на SSH ключове в Linux

🔐 Генериране и управление на SSH ключове в Linux

SSH (Secure Shell) е незаменим инструмент за сигурна комуникация между компютри. В тази статия ще разгледаме как да генерираме, управляваме и използваме SSH ключове в Linux, за да подобрим сигурността на отдалечените връзки.


📌 Какво е SSH ключ?

SSH ключовете са двойка криптографски ключове (публичен и частен), които заменят паролите при удостоверяване. Те са:

  • По-сигурни – устойчиви на brute force атаки.
  • По-удобни – не изискват въвеждане на парола при всяка връзка.
  • Лесно управляеми – могат да се използват за автоматизация.

🛠️ Генериране на SSH ключ

За да генерирате нов SSH ключ, използвайте командата:

Terminal
ssh-keygen -t ed25519 -C „ваш_коментар@пример.com“

📌 Опции:

  • -t ed25519 – препоръчителният алгоритъм (съвременен и сигурен).
  • -C "коментар" – опционално описание (обикновено имейл).

Ако използвате по-стар софтуер, може да се наложи RSA:

Terminal
ssh-keygen -t rsa -b 4096 -C „ваш_коментар@пример.com“

🔹 Стъпки след изпълнение:

  1. Системата ще поиска местоположение за запазване (натиснете Enter за стандартното).
  2. Задайте парола (passphrase) за допълнителна защита (незадължително).

📂 Управление на SSH ключове

🔍 Преглед на съществуващи ключове

SSH ключовете се съхраняват в ~/.ssh/. За да видите съдържанието:

Terminal
ls -la ~/.ssh

Типични файлове:

  • id_ed25519 / id_rsa – частен ключ (никога не споделяйте!).
  • id_ed25519.pub / id_rsa.pub – публичен ключ (споделя се със сървърите).

➕ Добавяне на публичен ключ към сървър

За да влезете без парола, публичният ключ трябва да бъде добавен в ~/.ssh/authorized_keys на отдалечения сървър.

⚡ Автоматичен метод (ако имате достъп с парола):

Terminal
ssh-copy-id потребител@сървър

🛠 Ръчен метод (копиране на ключа):

  1. Покажете публичния ключ:
Terminal
cat ~/.ssh/id_ed25519.pub

Копирайте изхода и го добавете в ~/.ssh/authorized_keys на сървъра.


🔄 Управление на множество SSH ключове

Ако имате няколко ключа, можете да ги конфигурирате в ~/.ssh/config:

Terminal
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
IdentitiesOnly yes
Host my-server
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_rsa_custom

📌 Ползи:

  • Избягва ръчно указване на ключове (-i).
  • Опростява връзките с псевдоними (ssh my-server).

🔐 Защита на SSH ключове

🔑 Използване на ssh-agent за управление на пароли

Ако сте задали passphrase, можете да я кеширате, за да не я въвеждате многократно:

Terminal
eval „$(ssh-agent -s)“
ssh-add ~/.ssh/id_ed25519

🔹 Автоматично добавяне при стартиране:
Добавете следното в ~/.bashrc или ~/.zshrc:

Terminal
if [ -z „
SSHAUTHSOCK„];theneval„SSHA​UTHS​OCK„];theneval„(ssh-agent -s)“
ssh-add ~/.ssh/id_ed25519 2>/dev/null
fi

🚫 Забрана на вход с парола

За да забраните вход само с парола (задължително SSH ключ), редактирайте /etc/ssh/sshd_config:

Terminal
PasswordAuthentication no
ChallengeResponseAuthentication no

След това рестартирайте SSH сървъра:

Terminal
sudo systemctl restart sshd

🗑️ Изтриване и ротация на ключове

❌ Премахване на компрометиран ключ

Ако ключ е изтекъл, изтрийте го от:

  1. Локалната машина (~/.ssh/).
  2. Всички сървъри (~/.ssh/authorized_keys).

🔄 Ротация на ключове (Best Practice)

Редовно генерирайте нови ключове (напр. 1-2 години) и ги разпространявайте.


🏁 Заключение

SSH ключовете са мощен инструмент за сигурност и удобство. Следвайте тези стъпки:
✅ Използвайте ed25519 или RSA 4096.
✅ Защитете частните ключове с passphrase.
✅ Конфигурирайте ~/.ssh/config за лесно управление.
✅ Деактивирайте вход с парола за максимална защита.

С тези практики ще подобрите сигурността на вашите Linux системи значително! 🚀

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: 🔰