
SSH – это сетевой протокол, позволяющий управлять удалёнными системами через зашифрованный канал. Он применяется для доступа к серверам, передачи файлов, настройки служб и выполнения команд без физического присутствия у машины. Шифрование основано на криптографических ключах, благодаря чему команды и параметры подключения недоступны для перехвата.
В Linux SSH входит в пакет OpenSSH, который можно установить через стандартный менеджер пакетов. После установки сервис запускается как демон и ожидает входящих подключений. Администратор получает возможность входить на сервер под нужной учётной записью, использовать ключи вместо пароля и контролировать параметры соединения через файл настроек.
Для подключения применяется утилита ssh. Она открывает терминальную сессию и позволяет передавать команды на удалённую систему так же, как если бы пользователь находился перед её консолью. Дополнительно доступны инструменты scp и sftp для обмена файлами, что делает SSH универсальным инструментом администрирования.
Назначение SSH и принципы работы протокола в Linux

SSH используется для удалённого управления системами Linux через зашифрованный канал. Протокол позволяет выполнять команды, управлять службами и передавать файлы без риска перехвата данных. Шифрование основано на использовании пары ключей, что исключает доступ посторонних к содержимому сеанса.
При подключении клиент инициирует обмен версиями протокола, после чего стороны согласуют алгоритмы шифрования и хэширования. После установления защищённого канала выполняется аутентификация. В Linux поддерживаются методы на основе пароля, публичного ключа и комбинационные варианты с ограничениями на уровне конфигурации сервера.
Ниже приведена таблица, показывающая ключевые этапы работы SSH в Linux:
| Этап | Описание |
|---|---|
| Рукопожатие | Согласование версии протокола и алгоритмов шифрования |
| Создание защищённого канала | Формирование ключа сеанса и запуск шифрования трафика |
| Аутентификация | Проверка пользователя по паролю или ключевой паре |
| Передача данных | Обмен командами и файлами в зашифрованном виде |
Установка и активация SSH-сервера через пакет OpenSSH

OpenSSH доступен в стандартных репозиториях большинства дистрибутивов Linux. Для установки используется менеджер пакетов, после чего запускается демон sshd. Его работа обеспечивает приём входящих подключений и управление параметрами доступа.
Установка пакета выполняется командами:
- Debian/Ubuntu: sudo apt install openssh-server
- CentOS/RHEL: sudo dnf install openssh-server
- Arch Linux: sudo pacman -S openssh
После установки необходимо включить сервис и проверить его состояние:
- Активировать автозапуск: sudo systemctl enable sshd
- Запустить службу: sudo systemctl start sshd
- Проверить статус: sudo systemctl status sshd
Для приема соединений требуется открыть порт 22 в межсетевом экране. В системах на базе firewalld используется команда sudo firewall-cmd —add-service=ssh —permanent с последующим перезапуском. Это позволяет внешним клиентам подключаться к серверу без дополнительных настроек.
Создание и применение SSH-ключей для входа без пароля

SSH-ключи позволяют подключаться к серверу без передачи пароля. Пара состоит из закрытого файла, который хранится у пользователя, и открытого, размещаемого на удалённой системе. Аутентификация выполняется через криптографическую проверку соответствия этих файлов.
Создание ключей выполняется командой ssh-keygen -t ed25519. Алгоритм Ed25519 даёт компактный и быстрый набор ключей. После выполнения команды в каталоге ~/.ssh появятся файлы id_ed25519 и id_ed25519.pub. Закрытый файл не должен покидать локальную машину, а открытый требуется передать на сервер.
Для загрузки ключа на удалённую систему используется утилита ssh-copy-id user@host. В результате открытый ключ будет добавлен в файл ~/.ssh/authorized_keys на стороне сервера. Если доступ к серверу ограничен, открытый ключ можно перенести вручную и добавить в этот файл вручную.
После размещения ключа подключение выполняется командой ssh user@host. Сервер проверяет соответствие пары и выдаёт доступ без запроса пароля. Для повышения контроля над сессиями рекомендуется задавать права на каталог ~/.ssh с помощью chmod 700 ~/.ssh и ограничивать доступ к файлам ключей в соответствии с требованиями безопасности.
Настройка файла sshd_config для повышения безопасности доступа

Файл /etc/ssh/sshd_config определяет параметры работы сервера SSH. Изменение ключевых директив позволяет ограничить доступ и снизить риск несанкционированных подключений. После корректировки конфигурации требуется перезапустить службу sshd.
Ограничение входа по паролю выполняется директивой PasswordAuthentication no. Это исключает использование слабых паролей и вынуждает применять ключевую аутентификацию. Для отключения входа администратора по сети применяется параметр PermitRootLogin no, что снижает вероятность подбора данных для учётной записи root.
Для уменьшения числа попыток входа используются параметры:
MaxAuthTries 3 – ограничивает количество попыток на одно соединение;
LoginGraceTime 30 – задаёт время ожидания до завершения неуспешной сессии;
AllowUsers и DenyUsers – формируют список разрешённых или запрещённых учётных записей.
Дополнительная мера – смена порта через директиву Port. Например, установка порта 2222 уменьшает количество автоматических сканирований. После изменения порта требуется настроить межсетевой экран и разрешить подключение на новый номер.
Для проверки корректности параметров используется команда sudo sshd -t. Она позволяет убедиться, что файл не содержит ошибок, после чего можно выполнить перезапуск: sudo systemctl restart sshd. Это обеспечивает применение новых настроек без прерывания активных соединений.
Подключение к удалённому серверу и выполнение команд по SSH

Подключение выполняется утилитой ssh в формате ssh user@host. Пользовательская часть указывает учётную запись на сервере, а host – IP-адрес или доменное имя. При первом подключении клиент сохраняет отпечаток ключа сервера в файл ~/.ssh/known_hosts, что позволяет контролировать подмену узла.
Для выполнения единичной команды используется синтаксис ssh user@host «команда». В этом режиме соединение завершается сразу после обработки запроса. Такой способ подходит для запуска скриптов, проверки состояния служб и получения кратких отчётов без открытия интерактивной сессии.
Передача локального ключа для доступа без пароля не отменяет необходимости контроля прав доступа. Файлы в каталоге ~/.ssh должны иметь ограниченные разрешения, иначе сервер отклонит сессию. Проверка выполняется командой ls -l ~/.ssh с последующим выставлением прав chmod 700 ~/.ssh и chmod 600 ~/.ssh/id_*.
При работе через нестандартный порт используется параметр -p, например: ssh -p 2222 user@host. Если требуется проброс локального или удалённого порта, применяются флаги -L и -R, что даёт возможность подключать локальные приложения к сервисам, доступным только на сервере или наоборот.
Передача файлов через scp и sftp в среде Linux

scp позволяет копировать файлы между локальной системой и удалённым сервером через SSH. Основной синтаксис:
scp [опции] источник пользователь@сервер:путь_назначения
Для копирования файла с локальной машины на сервер:
scp /home/user/file.txt user@192.168.1.10:/home/user/
Для копирования файла с сервера на локальный компьютер:
scp user@192.168.1.10:/home/user/file.txt /home/user/
Ключ -r используется для рекурсивной передачи директорий, -P – для указания нестандартного порта SSH, -C – для включения сжатия при передаче.
sftp предоставляет интерактивный интерфейс для передачи файлов и управления удалёнными каталогами. Для подключения:
sftp user@192.168.1.10
После подключения доступны команды:
put локальный_файл– загрузка файла на сервер;get удалённый_файл– скачивание файла;cd– смена директории на сервере;lcd– смена локальной директории;mkdir– создание каталога на сервере;rm– удаление файла на сервере;exit– завершение сессии.
Для ускорения передачи больших файлов рекомендуется использовать -C в scp или активировать compression в настройках sftp. Для автоматизации операций удобно применять скрипты с key-based authentication вместо пароля.
scp подходит для быстрого копирования отдельных файлов и папок, а sftp удобен для работы с множеством файлов, навигации по каталогам и управления удалённой структурой.
Вопрос-ответ:
Что такое SSH и для чего он используется в Linux?
SSH (Secure Shell) — это протокол для безопасного подключения к удалённым системам через зашифрованный канал. В Linux его применяют для удалённого управления серверами, выполнения команд, передачи файлов и настройки туннелей без риска перехвата данных.
Как установить и запустить SSH-сервер в Linux?
Для установки на Ubuntu или Debian используется команда sudo apt install openssh-server, на CentOS или RHEL — sudo yum install openssh-server. После установки сервис запускают командой sudo systemctl start ssh, а для автоматического старта при загрузке sudo systemctl enable ssh. Проверка статуса выполняется через sudo systemctl status ssh.
Как подключиться к удалённому серверу с помощью SSH?
Для подключения используется команда ssh пользователь@IP_адрес. После ввода пароля или использования ключа, открывается защищённая сессия терминала. Можно указать порт с помощью ключа -p, например: ssh -p 2222 user@192.168.1.10.
Что такое ключи SSH и зачем их использовать?
Ключи SSH — это пара файлов: приватный ключ хранится локально, публичный размещается на сервере. Использование ключей позволяет входить на сервер без ввода пароля, повышает безопасность и удобство при автоматизации задач. Генерация ключей выполняется командой ssh-keygen, а копирование публичного ключа на сервер — ssh-copy-id user@сервер.
Как передавать файлы между локальной машиной и сервером через SSH?
Для передачи используют scp и sftp. scp копирует файлы напрямую через SSH, пример: scp file.txt user@192.168.1.10:/home/user/. sftp открывает интерактивную сессию для передачи и управления файлами, команды: put локальный_файл, get удалённый_файл, cd, lcd. Оба метода защищают данные шифрованием.
Как настроить безопасное подключение к серверу через SSH?
Для безопасного подключения необходимо установить SSH-сервер на удалённой машине и убедиться, что он запущен. На клиентской стороне используют команду ssh пользователь@IP_адрес. Для повышения безопасности лучше настроить аутентификацию с помощью ключей: создают пару ключей с ssh-keygen и копируют публичный ключ на сервер командой ssh-copy-id пользователь@сервер. После этого вход осуществляется без пароля, а соединение остаётся зашифрованным.
Чем отличаются scp и sftp при передаче файлов через SSH?
scp копирует файлы напрямую через зашифрованное соединение SSH, подходя для разовой передачи отдельных файлов или папок. Пример: scp file.txt user@192.168.1.10:/home/user/. sftp создаёт интерактивную сессию, позволяя перемещаться по каталогам на сервере, загружать и скачивать файлы, создавать папки и удалять данные. Команды включают put, get, cd, lcd. Sftp удобен для регулярной работы с большим количеством файлов.
