Cryptology Academy · Урок

SFTP и SCP: безопасная передача файлов

Сравните SFTP и SCP с небезопасным FTP и разберитесь в обеспечиваемой ими криптографической защите

Урок 3 из 413 шагов

«SFTP и SCP: безопасная передача файлов» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

SFTP — подсистема SSH, а не FTP

Несмотря на название, SFTP (протокол передачи файлов через SSH) не имеет никакого отношения к FTP. Это двоичный протокол, разработанный для работы как подсистема SSH-2, то есть он действует поверх существующего аутентифицированного и зашифрованного соединения SSH. SSH-клиент вызывает подсистему SFTP на сервере командой ssh user@host -s sftp. Все операции SFTP наследуют гарантии безопасности базового транспорта SSH.

Возможности SFTP

SFTP предоставляет богатый набор операций с файлами через зашифрованный канал: просмотр содержимого каталогов, загрузка файлов, скачивание файлов, удаление и переименование файлов, создание и удаление каталогов, чтение и установка разрешений и временных меток файлов, а также возобновление прерванных передач. Благодаря этим возможностям SFTP представляет собой полноценный интерфейс удалённой файловой системы, а не просто инструмент передачи файлов.

SCP: более простое копирование файлов через SSH

SCP (протокол безопасного копирования) — старый, более простой протокол для передачи файлов через SSH. Команда scp file.txt user@host:/path безопасно копирует файл. SCP проще использовать, чем SFTP, для разовых передач, но он поддерживает только подмножество операций: копирование с локального узла на удалённый, с удалённого на локальный или с одного удалённого узла на другой. В нём нет интерактивного режима и есть лишь ограниченная поддержка возобновления прерванных передач.

Уязвимости протокола SCP

Исходный протокол SCP имел серьёзную уязвимость: вредоносный сервер мог отправлять клиенту произвольные файлы независимо от того, что запрашивал клиент. Злоумышленник, контролирующий сервер, мог перезаписывать файлы за пределами предполагаемого каталога назначения. OpenSSH признал старый протокол SCP устаревшим в пользу scp на основе SFTP в OpenSSH 9.0 (2022). Современные команды scp используют под капотом SFTP, устраняя этот класс атак и сохраняя привычный синтаксис команд.

FTP, FTPS и SFTP: сравнение

Три распространённых варианта передачи файлов часто путают. FTP (порт 21) не шифруется и использовать его не следует. FTPS (FTP через SSL) добавляет TLS к FTP на порту 990 (неявный режим) или порту 21 (явный режим с AUTH TLS), поэтому требуются инфраструктура FTP и управление сертификатами. SFTP — полностью отдельный протокол поверх SSH (порт 22), повторно использующий существующие механизмы аутентификации SSH и управления ключами. SFTP обычно проще настраивать и обслуживать, чем FTPS.

rsync через SSH для эффективной синхронизации

rsync — это инструмент синхронизации файлов, который передаёт только изменившиеся части файлов, благодаря чему он значительно эффективнее SCP для инкрементных резервных копий. Запуск rsync с флагом -e ssh направляет все данные через туннель SSH. Команда rsync -avz -e ssh user@host:/remote/ /local/ синхронизирует удалённый каталог с локальным, передавая только изменения. rsync через SSH — стандартный подход к резервному копированию серверов и процессам развёртывания.

Передача больших файлов

SFTP поддерживает возобновляемые передачи: если во время большой загрузки соединение разрывается, передачу можно продолжить с последнего подтверждённого байта, а не начинать с нуля. Клиент sftp из OpenSSH поддерживает команду reput для возобновления загрузки и команду reget для возобновления скачивания. Для очень больших передач (файлов размером в несколько гигабайт) такие инструменты, как lftp, обеспечивают более надёжное управление передачами с автоматическими повторными попытками и ограничением пропускной способности.

Изоляция SFTP на основе Chroot для ограничения доступа

Сервер OpenSSH может ограничить пользователей SFTP определённым деревом каталогов с помощью изолированной среды chroot. Добавление в конфигурацию SSH директивы Match User с параметрами ChrootDirectory и ForceCommand internal-sftp создаёт изолированную среду SFTP. Пользователь может загружать и скачивать файлы в пределах назначенного ему каталога, но не может получить доступ к остальной файловой системе или выполнять команды оболочки. Такой подход широко используется для управления файлами на веб-хостинге и в порталах загрузки файлов клиентами.

Настройка сервера SFTP

Для включения SFTP на сервере OpenSSH необходимо добавить Subsystem sftp /usr/lib/openssh/sftp-server в sshd_config. Двоичный файл sftp-server обрабатывает все операции протокола SFTP. В конфигурациях chroot каталог ChrootDirectory должен принадлежать root и не быть доступным для записи никакому другому пользователю — это распространённый источник ошибок конфигурации. Проверка конфигурации с помощью sshd -t позволяет проверить синтаксис перед перезагрузкой службы.

SFTP для автоматизированных процессов резервного копирования

SFTP хорошо интегрируется с автоматизированными конвейерами резервного копирования. Сервер резервного копирования использует аутентификацию по открытому ключу для подключения без паролей, что позволяет выполнять передачи по расписанию cron без участия человека. Пользователь резервного копирования ограничен каталогом загрузки с помощью chroot, что уменьшает возможный ущерб в случае компрометации сервера резервного копирования. Мониторинг журналов сбоев подключений SFTP и ошибок передачи позволяет заранее обнаружить проблемы с резервным копированием, прежде чем они повлияют на возможность восстановления.

Инструменты клиента SFTP

Помимо клиента SFTP командной строки, графические инструменты, такие как FileZilla, Сайбердак и WinSCP, поддерживают SFTP и предоставляют интерфейсы перетаскивания, управление закладками и параллельный просмотр каталогов. Эти инструменты популярны среди разработчиков и администраторов, которые предпочитают рабочие процессы с GUI. Все они используют один и тот же базовый протокол SFTP и аутентификацию SSH, включая поддержку файлов ключей SSH и системного агента SSH.

SFTP против SCP

Какова была основная уязвимость системы безопасности в устаревшем протоколе SCP, из-за которой OpenSSH заменил его реализацией на основе SFTP?

SFTP и SCP: основные выводы

SFTP — это подсистема SSH, не связанная с FTP. Она предоставляет полный набор операций с удалённой файловой системой через зашифрованное соединение SSH. SCP проще, но в устаревшем протоколе была уязвимость обхода путей на стороне сервера. В OpenSSH 9.0 её устранили, заменив внутреннюю реализацию на SFTP. rsync через SSH обеспечивает эффективную инкрементальную синхронизацию. Изолированные окружения chroot ограничивают пользователей SFTP назначенными каталогами.

Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «SFTP и SCP: безопасная передача файлов» бесплатный?

Да — полный текст урока «SFTP и SCP: безопасная передача файлов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «SFTP и SCP: безопасная передача файлов»?

Сравните SFTP и SCP с небезопасным FTP и разберитесь в обеспечиваемой ими криптографической защите Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «SFTP и SCP: безопасная передача файлов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что делает протокол безопасным
  2. SSH: защита удалённого доступа
  3. SFTP и SCP: безопасная передача файлов
  4. DNSSEC: аутентификация ответов DNS
← Назад к Cryptology Academy