Что понадобится
- Компьютер или сервер под управлением Linux (инструкция актуальна для дистрибутивов Ubuntu, Debian, Arch Linux и Fedora).
- Права суперпользователя (root) для настройки системной службы и прав доступа на сервере.
- Установленные пакеты клиентской части (
ssh) и серверного демона (sshd) из комплекса OpenSSH. - Базовые навыки работы с терминалом, с чем поможет материал про основные команды терминала Linux для начинающих пользователей.
Принцип работы и архитектура OpenSSH
Пакет OpenSSH состоит из серверного демона sshd и клиентской программы ssh. Демон запускается на удаленной машине, прослушивает входящие сетевые запросы и порождает отдельный процесс для каждого нового соединения. Связь между двумя недоверенными хостами защищается сквозным шифрованием. На этапе установления соединения используется алгоритм Диффи — Хелмана для обеспечения прямой секретности (forward secrecy), после чего сеанс шифруется симметричным шифром, а целостность трафика поддерживается специальным кодом аутентификации сообщений (MAC).
Аутентификация клиента может производиться несколькими методами: на основе доверенных хостов, с использованием публичных ключей, через запрос-ответ (challenge-response) или посредством классической парольной проверки. Перед авторизацией система проверяет доступность учетной записи: аккаунт не должен быть заблокирован или внесен в списки исключений DenyUsers и DenyGroups. Если требуемые компоненты отсутствуют в системе, полезно знать, как устанавливать программы через терминал в Linux: pacman и DNF.
Настройка конфигурационного файла демона
Основным инструментом управления параметрами серверной службы выступает конфигурационный файл sshd_config. Командная строка позволяет гибко переопределять заданные в нем настройки при запуске.
- Откройте файл конфигурации демона с помощью текстового редактора с правами суперпользователя, используя команду:
sudo nano /etc/ssh/sshd_config
- Найдите директиву порта (
Port 22) и при необходимости измените ее значение на другой порт для повышения безопасности системы. - Убедитесь, что параметры аутентификации по ключам и паролям настроены в соответствии с требованиями вашей политики безопасности.
- Сохраните изменения и закройте текстовый редактор.
- Перезапустите службу демона для применения новых параметров командой:
sudo systemctl restart sshd
Настройка публичных ключей аутентификации
Для безопасного входа без ввода пароля используются файлы публичных ключей. Директива AuthorizedKeysFile определяет расположение таких файлов, по умолчанию это ~/.ssh/authorized_keys и ~/.ssh/authorized_keys2 в домашней директории пользователя.
- Создайте каталог для ключей на удаленном сервере, если он отсутствует:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
- Откройте файл авторизованных ключей в текстовом редакторе:
nano ~/.ssh/authorized_keys
- Каждая строка файла должна содержать ровно один публичный ключ. Пустые строки и комментарии, начинающиеся с символа
#, игнорируются системой. - Установите правильные права доступа на файл ключей для обеспечения безопасности:
chmod 600 ~/.ssh/authorized_keys
Подключение к удаленному хосту с помощью клиента SSH
Клиентская утилита ssh используется для подключения к удаленной машине и выполнения интерактивных команд.
- Запустите терминал на локальном компьютере.
- Введите базовую команду подключения, указав имя пользователя и сетевой адрес целевого хоста:
ssh username@hostname
Если требуется подключение к серверу, использующему нестандартный порт (например, 2222), задействуйте ключ -p:
ssh -p 2222 username@hostname
- При первом соединении с новым узлом система выведет предупреждение о подлинности ключа хоста и запросит подтверждение сохранения отпечатка в локальный файл
~/.ssh/known_hosts. Введитеyesи нажмите Enter. - Введите пароль учетной записи удаленного пользователя или укажите файл закрытого ключа через флаг
-i:
ssh -i /path/to/identity_file username@hostname
Дополнительные возможности туннелирования и перенаправления
Протокол SSH поддерживает расширенные сценарии использования, включая проброс портов (port forwarding), создание виртуальных сетевых туннелей и перенаправление графических X11-соединений. Перенаправление портов позволяет безопасно обращаться к сервисам за закрытым периметром. По умолчанию локальные или удаленные прослушиваемые сокеты привязываются к интерфейсу замыкания на себя (localhost), однако параметр GatewayPorts на стороне сервера позволяет разрешить подключения со всех интерфейсов при указании символа *.
Пересылка агента аутентификации должна активироваться с осторожностью: пользователи с правами суперпользователя на удаленном хосте теоретически могут получить доступ к локальному агенту через открытый сокет. В качестве более безопасной альтернативы спецификации OpenSSH рекомендуют применять выделенные хосты перенаправления (jump host) с использованием ключа -J в командной строке клиента.
Как понять, что всё получилось: после успешного прохождения проверки подлинности терминал выведет приветственное сообщение удаленной системы (/etc/motd), информацию о времени последнего входа и командную строку удаленного хоста, готовую к работе.
Если не получилось
- Ошибка соединения (Connection refused): убедитесь, что служба
sshdзапущенна на удаленном сервере, а брандмауэр не блокирует выбранный сетевой порт. - Отказ в аутентификации (Permission denied): проверьте правильность введенного пароля, состояние учетной записи в системе и корректность прав доступа к файлу публичных ключей
~/.ssh/authorized_keysна сервере. - Проблемы с ключом хоста: если на удаленной машине переустанавливалась операционная система, старый отпечаток в локальном файле
known_hostsвызовет предупреждение безопасности. Удалите устаревшую запись для данного IP-адреса.




