Установка SSH на Ubuntu/Debian: Пошаговая инструкция и настройка | AdminWiki

Установка SSH на Ubuntu и Debian: Полное руководство для безопасного подключения

17 декабря 2025 7 мин. чтения #debian #linux #openssh #ssh #ubuntu #безопасность #сервер #удаленный доступ

Что такое SSH и зачем он нужен?

Представь, что тебе нужно управлять сервером, который стоит в дата-центре за сотни километров. Или настроить домашний медиа-сервер, не вставая с дивана. Именно для этого и существует SSH (Secure Shell) — протокол безопасного удаленного доступа к командной строке Linux-систем.

В этом руководстве мы подробно разберем установку SSH на Ubuntu и установку SSH на Debian — двух самых популярных дистрибутивах Linux. Давай начнем!

SSH использует шифрование для защиты данных, передаваемых между клиентом и сервером. Это делает его гораздо безопаснее устаревших протоколов вроде Telnet.

Проверка установленного SSH

Перед тем как начать установку, давай проверим, не установлен ли SSH сервер уже на твоей системе. Открой терминал и выполни:

bash
sudo systemctl status ssh

Или альтернативный вариант:

bash
which sshd

Если видишь сообщение о том, что служба активна или найден путь к sshd — SSH уже установлен. Если нет — переходи к следующему шагу.

Установка OpenSSH сервера на Ubuntu/Debian

Процесс установки практически идентичен для обоих дистрибутивов. OpenSSH — это стандартная реализация SSH протокола.

Шаг 1: Обновление пакетов

Всегда начинай с обновления списка пакетов:

bash
sudo apt update

Шаг 2: Установка OpenSSH сервера

Установи пакет openssh-server:

bash
sudo apt install openssh-server -y
Параметр -y автоматически подтверждает установку, избавляя от необходимости нажимать Enter.

Шаг 3: Проверка работы службы

После установки SSH сервер должен автоматически запуститься. Проверим:

bash
sudo systemctl status ssh

Ты должен увидеть active (running) в статусе службы.

Шаг 4: Настройка автозапуска

Убедись, что SSH запускается автоматически при загрузке системы:

bash
sudo systemctl enable ssh

Настройка SSH сервера для безопасности

Базовая установка готова, но стандартные настройки не самые безопасные. Давай это исправим.

Основной конфигурационный файл

Все настройки SSH хранятся в файле /etc/ssh/sshd_config. Создадим резервную копию перед редактированием:

bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Теперь отредактируем конфиг с помощью nano или vim:

bash
sudo nano /etc/ssh/sshd_config

Рекомендуемые настройки безопасности

Найди и измени следующие параметры:

config
# Изменяем стандартный порт (необязательно, но рекомендуется)
Port 2222  # вместо стандартного 22

# Запрещаем вход под root
PermitRootLogin no

# Разрешаем аутентификацию по ключам
PubkeyAuthentication yes

# Ограничиваем методы аутентификации
PasswordAuthentication no  # отключаем пароль, только ключи!

# Ограничиваем пользователей, которые могут подключаться
AllowUsers ваш_пользователь

# Включаем защиту от перебора паролей
MaxAuthTries 3
MaxSessions 10
Внимание! Если отключаешь PasswordAuthentication, убедись, что сначала настроил SSH ключи и проверил подключение. Иначе можешь потерять доступ к серверу!

Применение изменений

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

bash
sudo systemctl restart ssh

Настройка брандмауэра (UFW)

Если ты используешь UFW (Uncomplicated Firewall), нужно открыть порт для SSH:

bash
# Если используешь стандартный порт 22
sudo ufw allow ssh

# Если изменил порт на 2222 (или другой)
sudo ufw allow 2222/tcp

Включи брандмауэр, если он еще не активен:

bash
sudo ufw enable
sudo ufw status verbose

Создание и использование SSH ключей

Аутентификация по ключам гораздо безопаснее паролей. Давай настроим.

Генерация ключей на клиенте

На своем компьютере (не на сервере!) выполни:

bash
ssh-keygen -t ed25519 -C "your_email@example.com"
# или для совместимости со старыми системами
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Копирование публичного ключа на сервер

Самый простой способ — использовать утилиту ssh-copy-id:

bash
ssh-copy-id -p 2222 ваш_пользователь@ip_адрес_сервера

Если ssh-copy-id недоступна, сделай вручную:

bash
cat ~/.ssh/id_ed25519.pub | ssh -p 2222 ваш_пользователь@ip_адрес_сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Настройка прав доступа

На сервере проверь права на файлы:

bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Подключение к SSH серверу

Теперь можно подключиться к серверу. Основные варианты:

Тип подключения Команда Описание
Стандартный порт ssh user@hostname Подключение на порт 22
Нестандартный порт ssh -p 2222 user@hostname Если изменили порт SSH
С указанием ключа ssh -i ~/.ssh/id_ed25519 user@hostname Явное указание ключа
Выполнение команды ssh user@hostname 'ls -la' Запуск команды без входа в shell

Полезные команды для управления SSH

  • Просмотр активных сессий: sudo who -a или sudo w
  • Просмотр логов SSH: sudo journalctl -u ssh -f
  • Добавление SSH ключа в агент: ssh-add ~/.ssh/id_ed25519
  • Тестирование конфигурации: sudo sshd -t
  • Перезагрузка SSH: sudo systemctl reload ssh (без разрыва активных сессий)

Частые проблемы и решения

"Connection refused" или "Connection timed out"

Возможные причины:

  1. SSH сервер не запущен: sudo systemctl start ssh
  2. Брандмауэр блокирует порт: проверь правила UFW
  3. Неправильный порт: убедись, что указываешь правильный порт
  4. Сервер не слушает на интерфейсе: проверь sudo ss -tlnp | grep ssh

"Permission denied (publickey)"

Проверь:

  • Публичный ключ в authorized_keys на сервере
  • Права на файлы: 700 для .ssh, 600 для authorized_keys
  • Правильного пользователя в AllowUsers (если настроено)
  • Что PasswordAuthentication отключен (если пытаешься по паролю)

Дополнительные возможности SSH

  • Туннелирование портов: ssh -L 8080:localhost:80 user@server — проброс портов
  • Проброс X11: ssh -X user@server — запуск графических приложений
  • SCP/SFTP: scp file.txt user@server:/path/ — передача файлов
  • SSH Config: настройка алиасов в ~/.ssh/config

Автоматизация с помощью ~/.ssh/config

Создай файл ~/.ssh/config на клиенте для удобства:

config
Host myserver
    HostName 192.168.1.100
    Port 2222
    User ваш_пользователь
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60
    ServerAliveCountMax 3

Host github.com
    User git
    IdentityFile ~/.ssh/github_key

Теперь можно подключаться просто: ssh myserver

Регулярно обновляй SSH сервер: sudo apt update && sudo apt upgrade openssh-server. Это важно для безопасности.

Заключение

Мы подробно разобрали процесс установки SSH на Ubuntu и Debian, настроили безопасную конфигурацию, научились работать с ключами и решать типичные проблемы. Теперь у тебя есть надежный и безопасный доступ к твоим серверам.

Помни главные правила безопасности SSH:

  1. Всегда используй аутентификацию по ключам вместо паролей
  2. Отключай вход под root
  3. Меняй стандартный порт (опционально, но рекомендуется)
  4. Ограничивай пользователей, которые могут подключаться
  5. Регулярно обновляй SSH сервер
  6. Мониторь логи на предмет подозрительной активности

Теперь ты готов к безопасной работе с удаленными серверами через SSH. Удачи в освоении!

Поделиться:
Сохранить гайд? В закладки браузера