OSEN-НИЙ SAAALEСкидка 50% на виртуальный хостинг и VDS
до 30.11.2025 Подробнее
Выберите продукт

SSH в Linux: установка, подключение, ключи и безопасная настройка

SSH в Linux на практике: ставим и запускаем, подключаемся, включаем ключевую аутентификацию и приводим sshd_config к безопасной базе. Пошаговые команды для Debian-based, RHEL-based и Arch, плюс диагностика и разбор частых ошибок.
SSH в Linux: установка, подключение, ключи и безопасная настройка

SSH (Secure Shell) — это стандартный способ безопасного удалённого доступа к серверу: весь трафик шифруется, а сервер и клиент взаимно проверяют подлинность. В Linux чаще всего используется OpenSSH: клиент ssh и демон sshd. В отличие от Telnet/FTP, логины, команды и файлы идут по защищённому каналу, а аутентификация ключами избавляет от передачи паролей.

В этой статье мы разберём установку и базовую настройку SSH на сервере (на примерах Ubuntu/Debian, с параллелями для RHEL/Alma/Rocky/Fedora и Arch), пройдёмся по ключевым параметрам конфигурации и рекомендациям по безопасности.

Как установить SSH

Во многих дистрибутивах OpenSSH-сервер уже предустановлен (включая наши облачные VDS). Начнём с проверки, а затем — с установки, если потребуется.

# сервис активен?
sudo systemctl status sshd || sudo systemctl status ssh

# слушает ли порт по факту:
sudo ss -lptn 'sport = :22'  # или lsof -i :22 -nP

Если сервис не найден или не активен — установите openssh-server и включите автозапуск (как описано ниже для вашего дистрибутива).

Установка OpenSSH Server

# Debian-based (Ubuntu, Debian, Astra Linux):

sudo apt update
sudo apt install -y openssh-server

# RHEL-based (RHEL, AlmaLinux, Rocky, Fedora):

sudo dnf install -y openssh-server

# Arch Linux:

sudo pacman -S openssh

После установки, службу требуется запустить и включить автозапуск. У разных семейств имя сервиса может отличаться (ssh или sshd) — попробуйте по порядку:

# Универсально: один из вариантов отработает
sudo systemctl enable --now sshd || sudo systemctl enable --now ssh

Подключение по SSH

SSH-сервер по умолчанию прослушивает соединения на порту 22, а также требует аутентификации сторон. Есть несколько вариантов проверки соединения.

Базовая авторизация (пароль)

Это удобно для первого логина, но для постоянной работы небезопасно, рекомендуем использовать ключ для авторизации.

Подключение:

ssh user@SERVER_IP

Далее потребуется ввести пароль пользователя для авторизации.

Обычно 22 порт слушается демоном после установки. Если подключение не идёт — проверьте локальный фаервол (UFW/firewalld/nftables) и внешние правила (ACL/роутер). Для быстрого внешнего теста пригодится наш онлайн-сканер портов.


Создание ключа для авторизации

Ключевая аутентификация безопаснее пароля. На клиенте хранится закрытый ключ, на сервере — открытый. При подключении сервер криптографически убеждается, что у клиента действительно есть соответствующий закрытый ключ; никакие ключевые файлы по сети не передаются. Это устраняет риск перехвата пароля и делает вход устойчивым к перебору.

1. Генерируем пару ключей на локальной машине (клиенте)

ssh-keygen -t ed25519 -a 64 -C "yourname@yourhost"

Основные параметры:

  • -t — тип ключа (rsa, ed25519, ecdsa)
  • -b — длина ключа в битах (для RSA — обычно 4096)
  • -C — комментарий (часто указывают email)
  • -f — путь для сохранения ключа (по умолчанию ~/.ssh/id_rsa или id_ed25519)

По умолчанию ключ будет создан по пути ~/.ssh/id_ed25519 (private) и ~/.ssh/id_ed25519.pub (public)

2. Копируем публичный ключ на сервер

Чтобы авторизоваться по ключу, нужно передать публичный ключ на сервер.

Самый простой и удобный способ — команда ssh-copy-id:

ssh-copy-id user@SERVER_IP

# если нестандартный порт:
ssh-copy-id -p 2222 user@SERVER_IP

Если команда не срабатывает, можно скопировать ключ вручную:

cat ~/.ssh/id_ed25519.pub | ssh user@SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Где ~/.ssh/id_ed25519.pub это путь до вашего публичного ключа на локальной машине.

В результате содержимое файла с публичным ключом id_ed25519.pub будет скопировано в файл ~/.ssh/authorized_keys на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером без ввода пароля. 

3. Проверка подключения

ssh user@SERVER_IP

Если всё настроено правильно — вы войдете без ввода пароля (или только введёте пароль от ключа, если он установлен).

Рекомендации по безопасности SSH

Смена порта для SSH

По умолчанию SSH слушает порт 22. Смена порта не повышает криптографическую безопасность, но снижает «шум» от массовых сканеров. Выбирайте не привилегированный порт выше 1024, обычно из «высокого» диапазона 49152–65535, и убедитесь, что он открыт в фаерволе и (для RHEL-based) разрешён в SELinux. Желательно подбирать номера, в которых все цифры отличаются, например 56893.

Изменить порт требуется в файле конфигурации /etc/ssh/sshd_config

Раскомментируйте строку Port 22. Вместо 22 укажите другой номер — например, Port 56893. Сохраните изменения и закройте файл.

Чтобы применить конфигурацию, перезапустите службу:

sudo systemctl reload sshd || sudo systemctl reload ssh

После успешного перезапуска убедитесь, что теперь подключение проходит по другому порту:

ssh -p 56893 user@ip_server

Также перед выходом из SSH, проверьте что новый порт доступен и не блокируется firewall на сервере. Если порт недоступен, то его требуется открыть. Подробная инструкция по работе с портами.


Отключение авторизации по паролю

Вход по паролю удобен на старте, но с точки зрения безопасности ключи лучше: их нельзя «подобрать», а пароль нередко приходится хранить небезопасно. После проверки входа по ключу имеет смысл выключить пароли в sshd_config — так сервер будет принимать только ключевую аутентификацию.

Важно помнить:

  • при утере закрытого ключа или порче ~/.ssh/authorized_keys вы лишитесь доступа;
  • перед отключением пароля обязательно проверьте вход по ключу из отдельного терминала;
  • держите резервный доступ (второй ключ/учётная запись или доступ через консоль панели/облака), чтобы не «запереть» себя.

Как только удостоверились, что вход по ключу работает, выключаем пароли. Откройте файл /etc/ssh/sshd_config и измените параметр PasswordAuthentication.
Вместо Yes установите значение No

PasswordAuthentication no

Примените изменения:

sudo systemctl reload sshd || sudo systemctl reload ssh

После этого исчезнет возможность использовать для авторизации пароли. Подключиться можно будет только с помощью SSH ключей.

FastFox VDS
Облачный VDS-сервер в России
Аренда виртуальных серверов с моментальным развертыванием инфраструктуры от 195₽ / мес

Безопасный конфиг: важные параметры sshd_config

Помимо основных параметров безопасности можно использовать дополнительные по собственному усмотрению. Ниже — набор /etc/ssh/sshd_config, который комфортен в проде: пример целиком и пояснения к ключевым опциям.

# ===== Основы =====
Protocol 2
AddressFamily any
# Port 22              # если меняли порт, раскомментируйте и задайте новое значение
# ListenAddress 0.0.0.0 # по умолчанию слушаем на всех интерфейсах; можно ограничить

# ===== Аутентификация =====
PubkeyAuthentication yes
PasswordAuthentication no         # выключаем пароли после проверки входа по ключам
ChallengeResponseAuthentication no
UsePAM yes

# ===== Root и доступ =====
PermitRootLogin prohibit-password # или 'no' — полный запрет
#AllowUsers user1 user2
#AllowGroups sshusers

# ===== Таймауты и защита от перебора =====
MaxAuthTries 3
LoginGraceTime 30s
ClientAliveInterval 60
ClientAliveCountMax 3

# ===== Диагностика (включайте на время настройки) =====
#LogLevel VERBOSE

Пояснения к параметрам:

  • Protocol 2 — современная версия протокола SSH.
  • AddressFamily any / inet / inet6 — на каких семьях адресов слушать. Можно явно оставить только IPv4 (inet) или IPv6 (inet6).
  • Port — порт SSH. Если меняете, не забудьте фаервол и (на RHEL-based) SELinux.
  • ListenAddress — при необходимости ограничьте прослушивание конкретным интерфейсом/адресом.
  • PubkeyAuthentication yes — включаем вход по ключам.
  • PasswordAuthentication no — выключаем пароли (после проверки ключей).
  • ChallengeResponseAuthentication no — отключаем устаревшие интерактивные методы.
  • UsePAM yes — оставляем PAM (обычно «как есть»).
  • PermitRootLogin prohibit-password / no — ограничаем или запрещаем вход под root.
  • AllowUsers / AllowGroups — белые списки пользователей/групп; удобно на общих хостах.
  • MaxAuthTries / LoginGraceTime — ограничиваем число попыток и время на логин.
  • ClientAliveInterval / ClientAliveCountMax — серверные keepalive, завершение «зависших» сессий.
  • LogLevel VERBOSE — больше деталей в логах на этапе настройки; в проде можно вернуть INFO.

После внесения изменений в файл конфигурации, нужно их применить:

sudo systemctl reload sshd || sudo systemctl reload ssh

Отладка и решение проблем

Диагностика подключения через ssh -v

Клиент умеет подробно логировать ход подключения:
-v (verbose), -vv, -vvv (максимум деталей).

ssh -v user@SERVER_IP
ssh -vv -p 2222 user@SERVER_IP

В логах видно: какой ключ пробуется, почему отвергнут метод, к какому адресу/порту действительно идёт соединение, как прошла проверка ключа хоста (host key).

Частые ошибки и способы их устранения

Permission denied (publickey)

Публичный ключ не в ~/.ssh/authorized_keys, не те права (~/.ssh — 700, файл — 600), логинитесь не тем пользователем/в не тот home. Проверьте владельца и путь.


Host key verification failed / WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

Часто после переустановки ОС/смены сервера. Удалите старую запись о ключе хоста:

ssh-keygen -R SERVER_IP
# затем переподключитесь и примите новый host key

Connection timed out / No route to host

Демон не слушает (sudo ss -lptn | grep :22), порт закрыт в UFW/firewalld/nftables, либо фильтрация/маршрутизация вне сервера. Проверьте локальный фаервол и внешние правила (клауд-ACL, роутер). Для внешней валидации удобно использовать наш Port Scanner.


Connection closed by remote host

Сработал fail2ban/sshguard, недостаточны лимиты (MaxAuthTries), проблемы PAM. Смотрите логи:

journalctl -u sshd -b

SELinux/AppArmor блокирует нестандартный порт

Для SELinux добавьте порт в ssh_port_t

sudo semanage port -a -t ssh_port_t -p tcp 2222 2>/dev/null || \
sudo semanage port -m -t ssh_port_t -p tcp 2222

И проверьте AVC-события:

sudo ausearch -m avc -ts today

Клиент (локальный сервер) использует не тот ключ

Укажите явно или настройте ~/.ssh/config:

ssh -i ~/.ssh/id_ed25519 user@SERVER_IP

# ~/.ssh/config
Host myserver
HostName SERVER_IP
User user
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes

Заключение

Настройка SSH на сервере Linux — важный шаг для безопасности и удобства удалённого управления. В статье мы прошли установку, первое подключение, перевод на ключевую аутентификацию, базовые параметры sshd_config и короткую диагностику. Следуя этим рекомендациям, вы снизите риск несанкционированного доступа и сделаете администрирование надёжнее и спокойнее.

Помните: безопасность держится на регулярных обновлениях, аккуратной конфигурации и проверках. Используйте ключи вместо паролей, следите за логами, периодически ревизуйте доступы.

FastFox VDS
Облачный VDS-сервер в России
Аренда виртуальных серверов с моментальным развертыванием инфраструктуры от 195₽ / мес
Поделиться статьей

Вам будет интересно

rclone serve: S3/WebDAV/HTTP как универсальный шлюз к Object Storage OpenAI Статья написана AI (GPT 5)

rclone serve: S3/WebDAV/HTTP как универсальный шлюз к Object Storage

Покажем, как превратить Object Storage в универсальный сервис с rclone serve: отдача по HTTP, WebDAV и S3, настройка VFS‑кэша и TT ...
fscrypt на ext4: практическое шифрование каталогов на VDS и сравнение с LUKS OpenAI Статья написана AI (GPT 5)

fscrypt на ext4: практическое шифрование каталогов на VDS и сравнение с LUKS

Разбираем нативное шифрование ext4 с fscrypt: чем оно отличается от LUKS на уровне диска, когда какой подход использовать на VDS, ...
Podman Quadlet: rootless systemd на VDS — практическое руководство OpenAI Статья написана AI (GPT 5)

Podman Quadlet: rootless systemd на VDS — практическое руководство

Quadlet превращает .container/.pod в systemd‑юниты. В связке с rootless Podman и systemd --user это чистый и безопасный способ дер ...