Введение / Зачем это нужно
SSH (Secure Shell) — это базовый инструмент для удалённого управления Linux-сервером. С его помощью можно безопасно выполнять команды, передавать файлы и администрировать систему из любой точки сети. После выполнения этого гайда у вас будет готовый набор навыков для настройки SSH, подключения к удалённым хостам и использования SSH-ключей для автоматической и защищённой аутентификации.
Требования / Подготовка
- Дистрибутив Linux (Ubuntu 22.04, Debian 12, Fedora 38, CentOS Stream 9)
- Права суперпользователя (или
sudo) для установки и настройки служб - Существующий пользователь с возможностью входа по паролю (или возможность создать его)
- Базовое понимание работы с терминалом и командной строки
Пошаговая инструкция
Шаг 1: Установить SSH-сервер
На большинстве современных дистрибутивов пакет openssh-server уже включён в базовый образ. Если служба отсутствует, установите её следующим образом:
# Для Debian/Ubuntu
sudo apt update && sudo apt install openssh-server -y
# Для Fedora/CentOS
sudo dnf install openssh-server -y
После установки сервис автоматически запустится. Проверьте его статус:
sudo systemctl status ssh
Шаг 2: Настроить SSH-клиент
Убедитесь, что клиентская часть установлена:
ssh -V
Сгенерируйте новую пару ключей Ed25519 (рекомендуется современным SSH):
ssh-keygen -t ed25519 -C "mykey"
Принимайте значения по умолчанию для местоположения (~/.ssh/id_ed25519) и подтвердите парольную фразу, если требуется.
Шаг 3: Подключиться к удалённому хосту
Скопируйте публичный ключ на целевой сервер с помощью утилиты ssh-copy-id:
ssh-copy-id user@remote-ip
Если ключ ещё не добавлен на сервер, вас попросят ввести пароль для локного пользователя (user). После успешного копирования подключитесь с использованием ключа:
ssh user@remote-ip
Если подключение успешно, вы окажетесь в удалённой командной строке.
Шаг 4: Использовать SSH-ключ для автоматической аутентификации
Чтобы избежать ввода пароля при каждом подключении, настройте клиент для использования ключа автоматически.
Откройте файл конфигурации клиента (~/.ssh/config) и добавьте следующий блок:
Host remote-host
HostName remote-ip
User user
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
Сохраните файл (Ctrl+O, Enter). Теперь вы можете подключаться одной командой:
ssh remote-host
Без ввода пароля и с использованием ключа.
Шаг 5: Проверить и решить типичные проблемы
- Служба не работает:
sudo systemctl restart sshиsudo systemctl enable ssh. - Проблемы с правами доступа: убедитесь, что
~/.ssh/id_rsaимеет права600, а директория~/.ssh—700. - Брандмауэр блокирует порт: откройте порт 22, например:
# UFW
sudo ufw allow ssh
# firewalld
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
- Ошибки аутентификации: проверьте, что публичный ключ добавлен в
~/.ssh/authorized_keysна сервере и что он имеет права644.
Проверка результата
- Подключение с ключом: выполните
ssh remote-hostи убедитесь, что вы вошли без запроса пароля. - Работа команд: выполните простую команду, например
whoamiилиls -la, чтобы убедиться, что удалённая оболочка работает. - Статус службы: проверьте
systemctl status ssh, чтобы убедиться, что служба работает и будет перезапускаться после перезагрузки.
Возможные проблемы
Permission denied (publickey): проверьте права доступа и содержание файлаauthorized_keys. Убедитесь, что ключ именно тот, что вы ожидаете.Connection timed out: проверьте сетевое соединение, заблокирован ли порт 22 в брандмауэре, и правильность IP-адреса.No such file or directory (Key not found): укажите правильный путь к ключу в конфигурации или используйтеssh -i ~/.ssh/id_ed25519 user@host.Address already in use: возможно, на сервере уже запущен другой SSH-демон (например,sshdна другом порту). Проверьтеss -tulpn | grep :22и настройтеPortв/etc/ssh/sshd_configпри необходимости.
Следуя этим инструкциям, вы сможете надёжно настроить SSH-соединение, использовать ключевую аутентификацию и быстро решить типичные проблемы. Удачного администрирования!