Что такое SSH и зачем он нужен?
Представь, что тебе нужно управлять сервером, который стоит в дата-центре за сотни километров. Или настроить домашний медиа-сервер, не вставая с дивана. Именно для этого и существует SSH (Secure Shell) — протокол безопасного удаленного доступа к командной строке Linux-систем.
В этом руководстве мы подробно разберем установку SSH на Ubuntu и установку SSH на Debian — двух самых популярных дистрибутивах Linux. Давай начнем!
Проверка установленного SSH
Перед тем как начать установку, давай проверим, не установлен ли SSH сервер уже на твоей системе. Открой терминал и выполни:
sudo systemctl status ssh
Или альтернативный вариант:
which sshd
Если видишь сообщение о том, что служба активна или найден путь к sshd — SSH уже установлен. Если нет — переходи к следующему шагу.
Установка OpenSSH сервера на Ubuntu/Debian
Процесс установки практически идентичен для обоих дистрибутивов. OpenSSH — это стандартная реализация SSH протокола.
Шаг 1: Обновление пакетов
Всегда начинай с обновления списка пакетов:
sudo apt update
Шаг 2: Установка OpenSSH сервера
Установи пакет openssh-server:
sudo apt install openssh-server -y
-y автоматически подтверждает установку, избавляя от необходимости нажимать Enter.
Шаг 3: Проверка работы службы
После установки SSH сервер должен автоматически запуститься. Проверим:
sudo systemctl status ssh
Ты должен увидеть active (running) в статусе службы.
Шаг 4: Настройка автозапуска
Убедись, что SSH запускается автоматически при загрузке системы:
sudo systemctl enable ssh
Настройка SSH сервера для безопасности
Базовая установка готова, но стандартные настройки не самые безопасные. Давай это исправим.
Основной конфигурационный файл
Все настройки SSH хранятся в файле /etc/ssh/sshd_config. Создадим резервную копию перед редактированием:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Теперь отредактируем конфиг с помощью nano или vim:
sudo nano /etc/ssh/sshd_config
Рекомендуемые настройки безопасности
Найди и измени следующие параметры:
# Изменяем стандартный порт (необязательно, но рекомендуется)
Port 2222 # вместо стандартного 22
# Запрещаем вход под root
PermitRootLogin no
# Разрешаем аутентификацию по ключам
PubkeyAuthentication yes
# Ограничиваем методы аутентификации
PasswordAuthentication no # отключаем пароль, только ключи!
# Ограничиваем пользователей, которые могут подключаться
AllowUsers ваш_пользователь
# Включаем защиту от перебора паролей
MaxAuthTries 3
MaxSessions 10
Применение изменений
После редактирования конфига перезагрузи SSH службу:
sudo systemctl restart ssh
Настройка брандмауэра (UFW)
Если ты используешь UFW (Uncomplicated Firewall), нужно открыть порт для SSH:
# Если используешь стандартный порт 22
sudo ufw allow ssh
# Если изменил порт на 2222 (или другой)
sudo ufw allow 2222/tcp
Включи брандмауэр, если он еще не активен:
sudo ufw enable
sudo ufw status verbose
Создание и использование SSH ключей
Аутентификация по ключам гораздо безопаснее паролей. Давай настроим.
Генерация ключей на клиенте
На своем компьютере (не на сервере!) выполни:
ssh-keygen -t ed25519 -C "your_email@example.com"
# или для совместимости со старыми системами
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Копирование публичного ключа на сервер
Самый простой способ — использовать утилиту ssh-copy-id:
ssh-copy-id -p 2222 ваш_пользователь@ip_адрес_сервера
Если ssh-copy-id недоступна, сделай вручную:
cat ~/.ssh/id_ed25519.pub | ssh -p 2222 ваш_пользователь@ip_адрес_сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Настройка прав доступа
На сервере проверь права на файлы:
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"
Возможные причины:
- SSH сервер не запущен:
sudo systemctl start ssh - Брандмауэр блокирует порт: проверь правила UFW
- Неправильный порт: убедись, что указываешь правильный порт
- Сервер не слушает на интерфейсе: проверь
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 на клиенте для удобства:
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
sudo apt update && sudo apt upgrade openssh-server. Это важно для безопасности.
Заключение
Мы подробно разобрали процесс установки SSH на Ubuntu и Debian, настроили безопасную конфигурацию, научились работать с ключами и решать типичные проблемы. Теперь у тебя есть надежный и безопасный доступ к твоим серверам.
Помни главные правила безопасности SSH:
- Всегда используй аутентификацию по ключам вместо паролей
- Отключай вход под root
- Меняй стандартный порт (опционально, но рекомендуется)
- Ограничивай пользователей, которые могут подключаться
- Регулярно обновляй SSH сервер
- Мониторь логи на предмет подозрительной активности
Теперь ты готов к безопасной работе с удаленными серверами через SSH. Удачи в освоении!