Обновяване на предпочитанията за бисквитки

Конфигуриране на оторизация на SSH ключове в сървър на Linux

Удостоверяването с SSH ключ е модерен и сигурен начин за свързване към сървър, базиран на Linux. То превъзхожда традиционните пароли по отношение на сигурността и удобството, особено ако редовно работите с отдалечени системи. В това ръководство ще ви преведем стъпка по стъпка през процеса на настройка - от създаването на ключове до повишената сигурност и автоматизацията. Ще научите как да организирате достъпа, да избягвате грешки и да направите работата си със сървъра ефективна и сигурна.

Какво представляват SSH ключовете и защо са по-добри от паролите

SSH (Secure Shell) е протокол за защитен отдалечен достъп до сървъри. Обикновено за влизане в системата се използва парола, но тя е уязвима: може да се забрави, да се улови чрез атака с груба сила или да се прихване при слабо криптиране. SSH ключовете решават тези проблеми, като заменят паролата с криптографска двойка: публичен ключ и частен ключ.
Публичният ключ се поставя на сървъра, докато частният ключ остава при вас и никога не се предава по мрежата. Когато се свържете, сървърът проверява дали ключовете съвпадат, като използва математически алгоритми. Този метод елиминира риска от изтичане на парола и ви позволява да автоматизирате влизането в системата, което е особено ценно за системните администратори, разработчиците и специалистите по DevOps.

Предимства на SSH ключовете:
  • Висока устойчивост на атаки;
  • Удобство при автоматично свързване;
  • Гъвкавост при управлението на достъпа за множество потребители или устройства.

Генериране на двойка SSH ключове

Създаване на ключове

Първо, трябва да генерирате ключове на локалното си устройство. Това става с помощта на програмата ssh-keygen, налична за Linux, macOS и Windows (с Git Bash или WSL).

Отворете терминал и изпълнете:
ssh-keygen -t rsa -b 4096
Нека разделим параметрите:
  • -t rsa — определя алгоритъма за криптиране. RSA е една от най-разпространените и сигурни опции;
  • -b 4096 — определя дължината на ключа в битове. 4096 е съвременният стандарт за висока сигурност.

Системата ще попита за пътя, по който да запише файловете. Пътищата по подразбиране са ~/.ssh/id_rsa (частен ключ) и ~/.ssh/id_rsa.pub (публичен ключ). Ако ключовете вече съществуват, посочете друг път, например:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_new_key -C "my_new_key"

Защита на ключа с парола

Ще бъдете помолени да въведете парола за частния ключ. Това не е задължително, но е силно препоръчително: ако някой получи достъп до устройството ви, ключът ще бъде безполезен без паролата. Използвайте сложна парола (над 12 символа, букви, цифри, специални символи). След това ще получите два файла и пръстов отпечатък за удостоверяване.

Проверете създадените файлове:
ls -l ~/.ssh

Прехвърляне на публичния ключ към сървъра

Ако разполагате с помощната програма ssh-copy-id, използвайте я:
ssh-copy-id -i ~/.ssh/id_rsa.pub потребител@server_address
  • -i ~/.ssh/id_rsa.pub — път на публичния ключ;
  • потребител@server_address — потребителско име и IP адрес/домейн (например, [email protected]).
След като въведете текущата парола на сървъра, ключът ще бъде добавен към ~/.ssh/authorized_keys.

Ръчен метод

Ако командата ssh-copy-id липсва, можете да копирате ключа ръчно, като използвате следната команда:
cat ~/.ssh/id_rsa.pub | ssh username@server_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Уверете се, че разрешенията за директорията ~/.ssh на сървъра са зададени правилно:
  • Папка ~/.ssh: права 700;
  • Файл authorized_keys: права 600.

Тестване на връзката

Опитайте се да се свържете:
ssh потребител@server_addressАко не е зададена парола за ключ, влизането в системата е автоматично. В противен случай въведете ключовата парола. Проверете дали всичко работи.

Ако нещо се е объркало, използвайте режима за отстраняване на грешки:
ssh -v потребител@server_addressВ дневника ще бъде показано къде е грешката (напр. грешни разрешения или липсващ ключ).

Подобряване на сигурността на сървъра

Деактивиране на влизането с парола

Отворете /etc/ssh/sshd_config:
nano /etc/ssh/sshd_config
Настройте го:
PasswordAuthentication no
Забележка: Първо проверете входния ключ, в противен случай достъпът ще бъде загубен.

Промяна на порта SSH

Променете порта в /etc/ssh/sshd_config (например на 2222):
Port 2222

Рестартирайте службата:
systemctl restart sshd
Проверете състоянието:
systemctl status sshd

Типични грешки и тяхното отстраняване

Задаването на SSH ключове понякога може да е трудно. Ето някои често срещани грешки и как да ги отстраните:

Грешка: "Permission denied (publickey)"

Това означава, че сървърът не е приел вашия ключ. Проверете това:
  1. Правилно ли е копиран публичният ключ в ~/.ssh/authorized_keys.
  2. Права на достъп: изпълнете
    chmod 700 ~/.ssh ; chmod 600 ~/.ssh/authorized_keys
  3. Собственик на файла: уверете се, че файловете принадлежат на потребителя
    chown потребител:група ~/.ssh -R

Грешка: "Agent admitted failure to sign"

Проблем с агента SSH. Рестартирайте го:
eval "$(ssh-agent -s)"
След това добавете ключа:
ssh-add ~/.ssh/id_rsa

Връзката увисва

Може би сървърът изисква ключовата парола, а вие не сте я забелязали. Уверете се, че използвате правилния ключ, или проверете дневника:
ssh -v user@server_address

Автоматизация на SSH

Конфигуриране на псевдоними

Създаване на файл ~/.ssh/config:
Host dev
HostName dev.example.com
User devuser
Port 2222
IdentityFile ~/.ssh/dev_key

Свържете се:
ssh dev
С помощта на SSH ключовете можете да автоматизирате различни задачи, като например:
  • Създаване на резервно копие на данни през SSH с помощта на rsync;
  • Автоматично изпълнение на скриптове и команди на отдалечен сървър;
  • Управление на конфигурацията и внедряване на приложения с помощта на Ansible или други инструменти за автоматизация.

Полезни съвети

  • Съхранявайте частния ключ на криптиран носител;
  • Използвайте ssh-add за управление на ключове;
  • Опитайте да се свържете с тестовия сървър и споделете опита си в коментарите.

Заключение

Конфигурирането на удостоверяване с SSH ключове значително повишава сигурността и удобството при работа с Linux сървъри. Като следвате тези стъпки и препоръки, ще осигурите надеждна защита на сървърите си и ще опростите процесите на управление.
02 Apr 2025, 19:12:49