15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
29.10.2024

Как да инсталирате и конфигурирате SSH на Linux: Пълно ръководство за сигурност за 2025 г.

SSH е единствената най-критична точка за достъп на вашия сървър. Неправилно конфигурираната SSH настройка може да бъде компрометирана за по-малко от пет минути от автоматизирани ботове, сканиращи интернет. Независимо дали управлявате среда за VPS Хостинг, машина с bare-metal или облачен инстанс, правилното заключване на SSH от първия ден е задължително.

В това ръководство ще научите как да инсталирате OpenSSH, да го конфигурирате сигурно, да внедрите удостоверяване с ключове и да приложите техники за втвърдяване на производствено ниво — всичко това на Linux сървър през 2025 г.

Какво е SSH и защо е важно?

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

По подразбиране SSH работи на порт 22 и поддържа:

  • Отдалечено влизане в сървъри и виртуални машини
  • Сигурно прехвърляне на файлове чрез SCP и SFTP
  • Отдалечено изпълнение на команди и скриптова автоматизация
  • Пренасочване на портове и тунелиране за сигурно маршрутизиране на трафика
  • X11 пренасочване за достъп до графични приложения

SSH е вашият основен административен интерфейс. Третирайте го по съответния начин.

Стъпка 1: Инсталиране на OpenSSH сървър

Повечето съвременни Linux дистрибуции се доставят с предварително инсталиран OpenSSH. Ако липсва, инсталирайте го с подходящия мениджър на пакети за вашата дистрибуция.

Ubuntu / Debian

sudo apt update
sudo apt install openssh-server -y

CentOS / RHEL / AlmaLinux / Rocky Linux

sudo yum install openssh-server -y

Fedora

sudo dnf install openssh-server -y

Arch Linux

sudo pacman -S openssh

След инсталацията са налични както OpenSSH сървърът (sshd), така и OpenSSH клиентът, което ви позволява да приемате входящи връзки и да се свързвате с други отдалечени сървъри.

Стъпка 2: Стартиране и активиране на SSH услугата

След инсталацията трябва да стартирате SSH демона (sshd) и да го конфигурирате да се стартира автоматично при зареждане на системата.

Стартиране на SSH услугата

sudo systemctl start ssh

Активиране на SSH при стартиране

sudo systemctl enable ssh

Проверка дали услугата работи

sudo systemctl status ssh

Нормалният изход ще показва active (running) в зелено. Ако видите грешки, проверете системните си журнали с journalctl -xe за диагностични подробности.

Стъпка 3: Разбиране на конфигурационния файл на SSH

Поведението на SSH се управлява от един основен конфигурационен файл:

/etc/ssh/sshd_config

Този файл контролира всичко — порта за слушане, методите за удостоверяване, разрешените потребители, ограниченията за влизане и много повече. Винаги създавайте резервно копие преди да правите промени:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Отворете файла с предпочитания от вас текстов редактор:

sudo nano /etc/ssh/sshd_config

След всякакви промени, винаги валидирайте синтаксиса на конфигурацията преди да рестартирате услугата, за да избегнете блокиране на достъпа си:

sudo sshd -t

Ако не се върнат грешки, приложете промените:

sudo systemctl restart ssh

Стъпка 4: Основни промени в SSH конфигурацията

4.1 Промяна на стандартния SSH порт

Порт 22 е първият порт, към който се насочват автоматизираните скенери и ботовете за груба сила. Промяната му към нестандартен порт драстично намалява шума в журналите ви и намалява излагането на опортюнистични атаки.

Намерете този ред в sshd_config:

#Port 22

Премахнете коментара и задайте персонализиран порт (изберете число между 1024 и 65535, което вече не се използва):

Port 2222

Запазете файла, валидирайте и рестартирайте SSH:

sudo sshd -t && sudo systemctl restart ssh

> Важно: Актуализирайте правилата на защитната стена незабавно след промяна на порта (вижте Стъпка 6). Ако не го направите, ще загубите достъп до сървъра си.

4.2 Деактивиране на root влизане чрез SSH

Разрешаването на директно root влизане чрез SSH е една от най-честите и опасни неправилни конфигурации. Ако атакуващ познае или разбие с груба сила root паролата, той получава пълен, неограничен контрол над системата ви.

Намерете тази директива:

PermitRootLogin yes

Променете я на:

PermitRootLogin no

Потребителите трябва да влизат със стандартен акаунт и да ескалират привилегиите с sudo при необходимост. Това създава съществен одитен слой — всяко привилегировано действие се записва срещу именуван потребителски акаунт.

4.3 Налагане на удостоверяване с ключове и деактивиране на пароли

Удостоверяването с парола е по своята същност уязвимо към атаки с груба сила. SSH двойките ключове — математически свързана комбинация от публичен/частен ключ — са експоненциално по-сигурни.

Намерете и задайте следните директиви:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

> Предупреждение: Деактивирайте удостоверяването с парола само след като сте тествали успешно влизането с ключ. Деактивирането на паролите без работещ ключ ще ви блокира завинаги.

4.4 Допълнителни директиви за втвърдяване

Добавете или променете тези настройки в sshd_config за втвърдена производствена конфигурация:

# Restrict login to specific users (replace 'youruser' with actual usernames)
AllowUsers youruser

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Limit authentication attempts per connection
MaxAuthTries 3

# Disable empty passwords
PermitEmptyPasswords no

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only modern, secure protocol version
Protocol 2

# Restrict SSH to specific network interface (optional, replace with your IP)
ListenAddress 0.0.0.0

Стъпка 5: Генериране и разполагане на SSH двойки ключове

SSH удостоверяването с ключове замества паролите с криптографско доказателство за самоличност. Ето как да го настроите правилно.

Стъпка 5.1: Генериране на двойка ключове на локалната машина

Изпълнете тази команда на вашата локална работна станция (не на сървъра):

ssh-keygen -t ed25519 -C "your_email@example.com"

> Защо Ed25519? Ed25519 е съвременен алгоритъм с елиптична крива, който е по-бърз, по-сигурен и произвежда по-кратки ключове от по-стария RSA алгоритъм. Той е препоръчителният избор за 2025 г.

Ако вашата система или инструменти изискват RSA по причини за съвместимост, използвайте 4096-битов ключ:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Ще бъдете подканени да:

  1. Изберете път до файла (натиснете Enter, за да приемете стандартния ~/.ssh/id_ed25519)
  2. Задайте незадължителна парола (силно препоръчително — тя криптира частния ви ключ в покой)

Това генерира два файла:

    ~/.ssh/id_ed25519 — Вашият частен ключ. Никога не го споделяйте. Никога не го копирайте на сървър.
    ~/.ssh/id_ed25519.pub — Вашият публичен ключ. Това е, което се инсталира на сървърите.
    
    Стъпка 5.2: Копиране на публичния ключ на сървъра
    Използвайте ssh-copy-id, за да прехвърлите сигурно публичния си ключ към отдалечения сървър:
    ssh-copy-id -p 2222 username@your_server_ip
    Заменете username с името на акаунта на сървъра ви и your_server_ip с действителния IP адрес.
    Тази команда добавя публичния ви ключ към ~/.ssh/authorized_keys на сървъра с автоматично правилни разрешения.
    Ръчен метод (ако ssh-copy-id не е наличен):
    cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
    Стъпка 5.3: Тестване на влизане с ключ
    Преди да деактивирате удостоверяването с парола, проверете дали влизането с ключ работи:
    ssh -p 2222 username@your_server_ip
    Ако се свържете успешно без да бъдете подканени за парола (или само за паролата на ключа си), удостоверяването с ключ работи правилно. Сега можете безопасно да деактивирате удостоверяването с парола в sshd_config.
    Стъпка 6: Конфигуриране на защитната стена за SSH
    Защитната стена е вашата първа линия на защита. Винаги я конфигурирайте да разрешава само SSH порта, който използвате.
    Използване на UFW (Ubuntu / Debian)
    # Allow your custom SSH port
    sudo ufw allow 2222/tcp
    
    # Enable the firewall
    sudo ufw enable
    
    # Verify the rules
    sudo ufw status verbose
    Използване на firewalld (CentOS / RHEL / Fedora)
    # Add the custom SSH port
    sudo firewall-cmd --permanent --add-port=2222/tcp
    
    # Remove the default port 22 (optional, after confirming new port works)
    sudo firewall-cmd --permanent --remove-service=ssh
    
    # Reload firewall rules
    sudo firewall-cmd --reload
    Ограничаване на SSH достъпа по IP адрес
    За максимална сигурност ограничете SSH достъпа само до известни, доверени IP адреси:
    # UFW example: allow SSH only from a specific IP
    sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp
    Това е особено ефективно на Dedicated сървъри, където контролирате целия административен достъп от фиксиран офис или VPN IP диапазон.
    Стъпка 7: Разширени мерки за сигурност
    7.1 Инсталиране и конфигуриране на Fail2Ban
    Fail2Ban наблюдава SSH журналните файлове и автоматично забранява IP адреси, които показват признаци на активност с груба сила.
    # Install Fail2Ban
    sudo apt install fail2ban -y   # Ubuntu/Debian
    sudo yum install fail2ban -y   # CentOS/RHEL
    
    # Create a local configuration file
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    Редактирайте /etc/fail2ban/jail.local и конфигурирайте SSH затвора:
    [sshd]
    enabled = true
    port    = 2222
    filter  = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime  = 3600
    findtime = 600
    Стартирайте и активирайте Fail2Ban:
    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    7.2 Използване на SSH конфигурационен файл за управление от страна на клиента
    На локалната си машина създайте или редактирайте ~/.ssh/config, за да опростите връзките и да наложите настройки за сигурност:
    Host myserver
        HostName your_server_ip
        User youruser
        Port 2222
        IdentityFile ~/.ssh/id_ed25519
        ServerAliveInterval 60
        ServerAliveCountMax 3
    С тази конфигурация можете да се свържете просто като напишете:
    ssh myserver
    7.3 Двуфакторно удостоверяване (2FA) за SSH
    За среди, изискващи най-високо ниво на сигурност на достъпа — като производствени бази данни, финансови системи или инфраструктура, регулирана от съответствие — помислете за добавяне на TOTP-базирано двуфакторно удостоверяване с Google Authenticator или Authy заедно с SSH ключове.
    sudo apt install libpam-google-authenticator -y
    google-authenticator
    След това конфигурирайте PAM и sshd_config, за да изискват едновременно ключ и еднократна парола. Това създава истински поток на многофакторно удостоверяване.
    Стъпка 8: Тестване и отстраняване на проблеми с SSH
    След завършване на конфигурацията систематично проверете дали всичко работи според очакванията.
    Тест на връзката
    ssh -p 2222 -v username@your_server_ip
    Флагът -v активира подробен режим, отпечатвайки детайлна информация за отстраняване на грешки за всеки етап от връзката — безценен за диагностициране на неуспехи при удостоверяване.
    Чести проблеми и решения
    
    
    
    
    Проблем
    Вероятна причина
    Решение
    
    
    
    
    Connection refused
    SSH не работи или грешен порт
    Проверете systemctl status ssh и правилата на защитната стена
    
    
    Permission denied (publickey)
    Ключът не е в authorized_keys или грешни разрешения
    Проверете дали ~/.ssh/authorized_keys съществува с chmod 600
    
    
    Host key verification failed
    Пръстовият отпечатък на сървъра е променен
    Премахнете стария запис от ~/.ssh/known_hosts
    
    
    Connection timed out
    Защитната стена блокира порта
    Проверете правилата на UFW/firewalld и облачните групи за сигурност
    
    
    Блокиран след промяна на конфигурацията
    Неправилна конфигурация в sshd_config
    Използвайте конзолен/KVM достъп за връщане на промените
    
    
    
    
    Диагностични команди
    # Check SSH service status
    sudo systemctl status ssh
    
    # View real-time SSH logs
    sudo journalctl -u ssh -f
    
    # Check which port SSH is listening on
    sudo ss -tlnp | grep sshd
    
    # Test configuration file syntax
    sudo sshd -t
    Пълна референция за втвърден sshd_config
    Ето готов за производство sshd_config, включващ всички препоръки за сигурност от това ръководство:
    # Network
    Port 2222
    ListenAddress 0.0.0.0
    Protocol 2
    
    # Authentication
    PermitRootLogin no
    PubkeyAuthentication yes
    PasswordAuthentication no
    PermitEmptyPasswords no
    ChallengeResponseAuthentication no
    MaxAuthTries 3
    LoginGraceTime 30
    
    # Session Management
    ClientAliveInterval 300
    ClientAliveCountMax 2
    MaxSessions 5
    
    # Access Control
    AllowUsers youruser
    
    # Features (disable what you don't need)
    X11Forwarding no
    AllowTcpForwarding no
    GatewayPorts no
    PermitUserEnvironment no
    
    # Logging
    SyslogFacility AUTH
    LogLevel VERBOSE
    Защо хостинг инфраструктурата ви е важна за SSH сигурността
    Сигурността на вашата SSH конфигурация не съществува изолирано — тя зависи силно от основната инфраструктура. Правилно втвърдената SSH настройка е най-ефективна, когато е разгърната на сървър, който вече осигурява:
    
    DDoS защита за поглъщане на обемни атаки преди да достигнат SSH порта ви
    NVMe съхранение за бързо записване на журнали и бързо реагиране на Fail2Ban
    1 Gbps мрежови портове за осигуряване на стабилност на връзката при натоварване
    KVM/конзолен достъп като метод за извънлентово възстановяване, ако случайно се блокирате
    
    Плановете за VPS Хостинг на AlexHost включват всичко по-горе, с пълен root достъп и поддръжка за персонализирани конфигурации на защитната стена — което ги прави идеални за разполагане на втвърдената SSH настройка, описана в това ръководство.
    Ако имате нужда от контролен панел за управление на сървъра ви заедно с SSH, разгледайте VPS Контролни панели за опции, включително cPanel, Plesk и DirectAdmin. За екипи, управляващи множество уеб проекти, Споделен уеб хостинг осигурява управлявана среда, където втвърдяването на SSH се обработва на ниво инфраструктура.
    И ако управлявате SSL-защитени уеб услуги заедно с вашия SSH-втвърден сървър, съчетаването на настройката ви с надеждно решение за SSL сертификати осигурява криптиране от край до край за всички ваши публично достъпни услуги.
    Контролен списък за SSH сигурност
    Използвайте този контролен списък, преди да считате SSH конфигурацията си готова за производство:
    
    [ ] OpenSSH сървърът е инсталиран и работи
    [ ] Стандартният порт 22 е променен към персонализиран порт
    [ ] Root влизането е деактивирано (PermitRootLogin no)
    [ ] Генерирана е двойка ключове Ed25519 или RSA-4096
    [ ] Публичният ключ е разгърнат в authorized_keys на сървъра
    [ ] Влизането с ключ е тествано успешно
    [ ] Удостоверяването с парола е деактивирано
    [ ] Защитната стена е конфигурирана да разрешава само новия SSH порт
    [ ] Fail2Ban е инсталиран и конфигуриран
    [ ] MaxAuthTries е зададен на 3 или по-малко
    [ ] ClientAliveInterval е конфигуриран да прекратява неактивни сесии
    [ ] Синтаксисът на sshd_config е валидиран с sudo sshd -t
  • [ ] Потвърден е извънлентов конзолен достъп (KVM/VNC)

Заключение

Правилното инсталиране и конфигуриране на SSH е едно от най-фундаменталните умения в администрирането на Linux системи. Стандартната SSH инсталация е пасив; втвърдената SSH конфигурация е актив. Следвайки това ръководство, вие:

  1. Инсталирахте и стартирахте OpenSSH сървъра
  2. Променихте стандартния порт и деактивирахте root влизането
  3. Внедрихте криптографски силно удостоверяване с ключове
  4. Конфигурирахте правила на защитната стена за ограничаване на достъпа
  5. Разгърнахте Fail2Ban за блокиране на опити с груба сила
  6. Установихте пълна методология за отстраняване на проблеми

SSH, когато е правилно конфигуриран, се превръща в мощен, надежден и сигурен шлюз за отдалечено управление, автоматизационни тръбопроводи и криптирана комуникация между системи. Комбиниран с надеждна хостинг инфраструктура — като Dedicated сървърите на AlexHost с DDoS смекчаване на хардуерно ниво — имате основа, която е наистина трудна за компрометиране.

Периодично преглеждайте SSH конфигурацията си. Ротирайте ключовете си ежегодно. Наблюдавайте журналите си. Сигурността не е еднократна задача — тя е непрекъсната практика.

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало