Руководство по SSH: установка, использование и копирование файлов с OpenSSH
.jpg)
SSH (Secure Shell) — это протокол для защищённого удалённого доступа по модели клиент/сервер. Он предоставляет аутентификацию и шифрованную передачу данных. Стандартный набор утилит включает ssh, scp, sftp и rsync. Эти инструменты пришли на смену устаревшим протоколам, таким как telnet, rcp и rlogin.
В этом руководстве вы узнаете, как установить и активировать OpenSSH на Linux-машине, какие команды применять для подключения и удалённого выполнения команд, как безопасно копировать файлы и какие варианты оптимальны в разных сценариях.
Что такое SSH — одно предложение
SSH — протокол для защищённого удалённого доступа и передачи файлов по сети, использующий шифрование и механизмы аутентификации.
Основные сценарии использования (Primary intent и варианты)
- Установка и включение OpenSSH сервера и клиента.
- Удалённый вход и выполнение команд через ssh.
- Копирование и синхронизация файлов: scp, rsync, sftp.
- Безопасная настройка и жёсткая политика доступа.
Важно: перед изменением конфигурации проверьте доступ к консоли или запасной канал доступа, чтобы не потерять контроль над сервером.
Установка OpenSSH: RHEL/Fedora и Ubuntu
По умолчанию многие Linux-дистрибутивы уже содержат клиент и/или сервер OpenSSH. Пакеты называются openssh, openssh-server и openssh-client.
Для RHEL/Fedora используйте yum/dnf и проверьте список установленных пакетов:
yum list installed | grep openssh В Ubuntu клиент обычно присутствует как openssh-client; сервер поставляется в пакете openssh-server. Список пакетов можно получить через dpkg:
sudo dpkg --list | grep openssh Чтобы установить сервер в Ubuntu, выполните:
sudo apt-get install openssh-server Советы по локализации пакетов: в системах с apt используйте apt или apt-get, в системах с dnf — dnf.
Инициация и включение сервиса SSH
Управление службой OpenSSH зависит от дистрибутива, но в современных системах используется systemd.
Проверить статус сервиса:
systemctl status sshd.service # for Fedora and RHEL
systemctl status ssh # for UbuntuЕсли сервис не запущен, запустите его:
systemctl start sshd.service # for Fedora and RHEL
systemctl start ssh # for UbuntuЧтобы включить запуск при загрузке:
systemctl enable sshd.service
systemctl enable sshПримечание: имена сервисов могут различаться. Используйте systemctl list-units | grep ssh для поиска точного имени.
Как пользоваться клиентскими утилитами SSH
Ниже — практическое описание часто используемых команд и сценариев.
Удалённый вход (Remote Login)
Команда ssh — наиболее частая при удалённой конфигурации сервера с запущенным sshd.
Пример входа на сервер как пользователь ubuntu по IP X.X.X.X:
ssh ubuntu@X.X.X.XЛокальный вход на тот же хост для теста:
ssh localhostПри первом подключении ssh предложит подтвердить отпечаток ключа сервера. Введите yes и затем пароль пользователя, если настроена паролная аутентификация. После подтверждения ключ сервера будет добавлен в файл ~/.ssh/known_hosts.
Завершение сеанса: команда exit или сочетание ~. (тильда затем точка) для форсированного закрытия соединения.
Удалённое выполнение команд (Remote Execution)
ssh позволяет запустить удалённую команду и вывести её результат локально.
Пример: выполнить hostname на удалённом хосте от имени пользователя ubuntu:
ssh ubuntu@X.X.X.X hostnameЕсли команда содержит аргументы или несколько команд, возьмите их в кавычки:
ssh ubuntu@X.X.X.X "cat /tmp/new_file"Для выполнения последовательности команд можно соединять через && или ; либо использовать X11-пересылку, если нужно запускать графические приложения.
Пример с X11-пересылкой (сначала включите X11 Forwarding в /etc/ssh/sshd_config):
ssh -X ubuntu@X.X.X.X hostname & cat /tmp/new_file/ & exitВажно: X11 требует корректной настройки серверной части (X11Forwarding yes) и наличия X-сервера на клиенте.
Копирование файлов: scp и rsync
scp — простой инструмент для копирования файлов по SSH. rsync — более гибкий и предпочтителен для резервного копирования и синхронизации.
Копирование одного файла с удалённой машины в /tmp:
scp ubuntu@X.X.X.X:/home/ubuntu/demo/file /tmpРекурсивное копирование каталога:
scp -r localhost:/home/ubuntu/ /tmpОграничения scp:
- по умолчанию заменяет уже существующие файлы; не умеет эффективно синхронизировать дельты;
- при некоторых вариантах может не сохранять все атрибуты (время/права) без флага -p.
Пример просмотра прав и времени создания файлов:
ls -l /etc/demo /tmp/demo 
Повторный вызов scp перезапишет файлы и обновит временные метки:

Флаг -p помогает сохранять метку времени и права:
scp -p ubuntu@X.X.X.X:/path/to/file /local/pathНо для инкрементных бэкапов и сохранения атрибутов предпочтительнее rsync.
Пример rsync для архивации и подробного вывода:
rsync -av ubuntu@X.X.X.X:/home/ubuntu/demo /tmp 
rsync сохраняет временные метки и права и при повторном запуске не копирует уже синхронизированные файлы:

Совет: добавьте флаг –delete, если нужно зеркально синхронизировать целевой каталог, но будьте осторожны — это удалит файлы.
Безопасная настройка SSH: быстрые рекомендации
Ниже — практические шаги для жёсткой политики доступа.
- Используйте аутентификацию по ключам (public key). Коротко: на клиенте выполните ssh-keygen и затем скопируйте ключ на сервер через ssh-copy-id.
- Отключите парольную аутентификацию, когда ключи настроены: в /etc/ssh/sshd_config установите PasswordAuthentication no.
- Запретите вход под root: PermitRootLogin no.
- Ограничьте доступ по IP или с помощью tcpwrappers/фаервола (ufw/iptables/firewalld).
- Поменяйте порт по умолчанию (22) только при необходимостях, помня о совместимости.
- Включите и настройте Fail2Ban для защиты от брутфорса.
- Ограничьте используемые алгоритмы и ключи в /etc/ssh/sshd_config, чтобы отключить слабые шифры.
Краткий пример команды для копирования публичного ключа на сервер:
ssh-copy-id ubuntu@X.X.X.XЕсли ssh-copy-id недоступен, можно вручную добавить содержимое ~/.ssh/id_rsa.pub в ~/.ssh/authorized_keys на сервере.
Важно: перед отключением паролей убедитесь, что у вас есть рабочая пара ключей и сохранённый доступ.
Когда SSH не подходит — типичные ограничения
- Низкая пропускная способность сети: при худом соединении интерактивная сессия может быть неудобна.
- Доступ к GUI-приложениям сложнее без X11 или VNC.
- Если требуется массовая синхронизация огромных объёмов, может понадобиться специализированный инструмент для передачи (например, block-level репликация).
- В средах с жёсткой сетевой сегрегацией SSH может блокироваться политиками безопасности.
Альтернативы и их области применения
- telnet — устарел, передаёт всё в открытом виде, использовать нельзя для безопасного доступа.
- sftp — безопасная замена FTP, полезен для интерактивной работы с файлами.
- scp — прост для одноразовых копий, но rsync лучше для бэкапов и синхронизации.
- VPN + SMB/NFS — пригодны, если нужно сетевое монтирование и обмен файлами между серверами в пределах защищённой сети.
Чек-лист для ролей
Администратор сервера:
- Установить openssh-server.
- Настроить аутентификацию по ключам.
- Отключить вход под root.
- Включить журналирование и мониторинг.
DevOps/инженер развертывания:
- Настроить автоматическое развёртывание ключей.
- Настроить rsync/CI задачи для синхронизации.
- Проверить резервный доступ через консоль провайдера.
Обычный пользователь:
- Сгенерировать SSH-ключи локально.
- Хранить приватный ключ в защищённом месте.
- Использовать ssh-agent для удобной работы с ключами.
Критерии приёмки
- Сервер отвечает на ssh-запрос и принимает подключение по ключу.
- Парольная аутентификация отключена (если политика требует).
- root-подключение запрещено.
- rsync корректно синхронизирует данные и сохраняет метаданные (время, права).
- Логи составаются и содержат информацию о попытках подключения.
Мини-методология быстрой настройки (SOP)
- Установить пакет openssh-server.
- Сгенерировать ключи на клиенте: ssh-keygen -t rsa -b 4096.
- Скопировать публичный ключ: ssh-copy-id user@host.
- Проверить подключение по ключу.
- Отключить PasswordAuthentication в /etc/ssh/sshd_config и перезапустить sshd.
- Настроить Fail2Ban/фаервол.
Примеры тест-кейсов / критерии приёмки для rsync
- После выполнения rsync -av исходная и целевая папки имеют одинаковые временные метки и права.
- Повторный запуск rsync не копирует файлы, если они не менялись.
- При добавлении нового файла rsync копирует только новый файл.
Небольшой глоссарий — однострочно
- ssh: клиент для защищённого удалённого доступа.
- sshd: демон SSH на сервере.
- scp: простое копирование файлов через SSH.
- rsync: инструмент для синхронизации файлов по сети с поддержкой дельт.
- ssh-keygen: генерация ключей SSH.
Примечание о конфиденциальности и соответствии
SSH сам по себе обеспечивает конфиденциальность передачи. Для соответствия требованиям GDPR/локального законодательства убедитесь, что:
- доступ к журналам ограничен;
- ключи и конфигурации хранятся в защищённых местах;
- есть политика ротации ключей и контроля доступа.
Частые ошибки и как их исправить
- Проблема: при настройке PasswordAuthentication no вы потеряли доступ. Решение: используйте консоль провайдера или восстановите доступ через VNC/serial.
- Проблема: rsync удаляет нужные файлы при –delete. Решение: протестируйте команду с –dry-run и проверьте список удаляемых файлов.
- Проблема: scp переписывает файлы и ломает временные метки. Решение: используйте scp -p или перейдите на rsync -av.
Итого — краткое резюме
SSH остаётся стандартом для защищённого удалённого управления Linux-серверами. Для одноразовой передачи файлов подойдёт scp, но для резервного копирования и регулярной синхронизации лучше использовать rsync. Всегда настраивайте аутентификацию по ключам и следуйте базовым рекомендациям по безопасности.
Смотрите также: Секьюрное копирование файлов в Linux с помощью команды scp — полезная статья для практики.
Похожие материалы
Как разобрать и почистить контроллер Xbox One
Удалённый доступ к Windows 10/11 с Mac — настройка
Удалённый доступ к Home Assistant через Tailscale
Руководство по Google Collections для изображений
Termscp — TUI файловый менеджер для удалённых серверов