Как пользоваться sftp в Linux: безопасная передача файлов

Что такое SFTP
SFTP (SSH File Transfer Protocol) — это протокол передачи файлов, который работает поверх SSH (Secure Shell). В отличие от классического FTP, SFTP шифрует как данные, так и управляющие команды, что защищает пароли и содержимое файлов при передаче по сети.
Коротко: SSH обеспечивает канал, SFTP использует этот канал для безопасной передачи файлов.
Важно: SFTP и FTPS — разные технологии. FTPS использует TLS поверх FTP; SFTP всегда идёт через SSH.
Типичные случаи использования
- Безопасная передача бэкапов между серверами.
- Обмен конфиденциальными файлами с подрядчиками.
- Доставка артефактов сборки (CI/CD) на серверы деплоя.
- Работа с Raspberry Pi и другими одноплатными компьютерами.
Доступ к удалённой машине
В Linux для работы с протоколом используют утилиту sftp (входит в OpenSSH). Подключение выполняется так (замените username и ip-адрес):
sftp username@ip-address-of-remote-pcПосле ввода пароля вы попадёте в интерактивный режим sftp. Если подключение успешно, вы увидите приглашение sftp> и сможете вводить команды.
Если у вас нет удалённого сервера, можно протестировать локально:
sftp 127.0.0.1Важно: по умолчанию SFTP использует порт 22 (тот же, что и SSH). Если SSH сервис настроен на другом порту, укажите его через опцию -oPort или -P в клиентах, поддерживающих это.
Основные команды интерактивного режима
Sftp работает интерактивно. Команды нечувствительны к регистру. Ниже — часто используемые команды.
Список файлов и текущая директория
- Просмотреть содержимое текущей директории на сервере:
ls- Просмотреть содержимое текущей директории локально:
lls- Узнать текущую директорию на сервере:
pwd- Узнать текущую локальную директорию:
lpwdИспользуйте флаги для ls, например -l или -a.
Совет: сочетание Ctrl+L очищает экран терминала.
Загрузка файлов на сервер
- Передать один файл с локальной машины на сервер:
put localfile.ext- Передать каталог рекурсивно:
put -r localdir- Передать несколько файлов (маска):
mput *.xlsПример передачи ISO-файла:
put manjaro-xfce-21.0.7-minimal-210614-linux54.isoВо время передачи sftp показывает прогресс и скорость.
Для прерывания передачи используйте Ctrl+C.
Скачивание файлов с сервера
- Скопировать файл с сервера на локальную машину:
get index.html- Скопировать несколько файлов по маске:
mget *.htmlУправление правами и завершение сессии
- Изменить права файла на сервере:
chmod 777 index.html- Завершить сессию sftp:
byeАльтернативы: exit или quit.
Справка в интерактивном режиме
Чтобы получить встроенную справку:
helpили
?Режимы использования sftp вне интерактива
Sftp можно запускать в пакетном режиме. Это удобно для автоматизации.
Пример: выполнить набор команд из файла batch.txt
sftp -b batch.txt username@hostФормат batch.txt — строки обычных команд (lcd, cd, put, get и т. д.).
Контроль целостности файлов
При передаче больших файлов полезно сверять контрольные суммы. Простой рабочий процесс:
- На исходной машине расчитайте sha256sum: sha256sum file > file.sha256
- Передайте оба файла через sftp.
- На приёмной машине выполните sha256sum -c file.sha256.
Это подтвердит, что файл передан без повреждений.
Мини‑методология: быстрая пошаговая инструкция
- Подключитесь через sftp: sftp user@host
- Перейдите в нужную удалённую директорию: cd /path
- Перейдите в локальную директорию: lcd /local/path
- Передайте файлы: put file или mput *.txt
- Проверьте целостность (опционально): сравните хэши
- Выйдите: bye
Чеклист по ролям
Системный администратор:
- Настроить SSHD с поддержкой SFTP.
- Включить логирование соединений.
- Ограничить доступ через брандмауэр по IP/портам.
- Рассмотреть chroot‑каталоги для пользователей.
DevOps / CI-инженер:
- Использовать ключи SSH для автоматизации.
- Хранить ключи в защищённом хранилище (vault).
- Проверять целостность и права на загружаемые артефакты.
Разработчик:
- Работать через lls и lpwd для контроля контекста.
- Не передавать секреты в открытом виде.
- Предпочитать scp/sftp с ключами вместо паролей.
Пользователь Raspberry Pi:
- Включить SSH на устройстве.
- Подключаться с компьютера по sftp user@raspberrypi.local.
Безопасность и жёсткая настройка
- Предпочитайте аутентификацию по ключу (Public Key) вместо пароля.
- Отключите вход по паролю в /etc/ssh/sshd_config: PasswordAuthentication no.
- Используйте ограничение доступа через AllowUsers/AllowGroups.
- Включите chroot для пользователей, которым нужен только SFTP-доступ.
- Ограничьте используемые алгоритмы шифрования актуальными наборами в настройках SSH.
- Включите логирование и мониторинг попыток доступа.
Важно: любые изменения в sshd_config требуют перезапуска службы и проверки доступности.
Совместимость и альтернативы
- Клиенты: OpenSSH sftp на Linux/macOS, WinSCP и PuTTY (psftp) на Windows.
- Серверы: OpenSSH (распространён), коммерческие SFTP-серверы с web-интерфейсом.
- Альтернативы для передачи файлов: rsync (эффективный при синхронизации), scp (простая копия по SSH), FTP/FTPS (если требуется совместимость со старыми системами).
Совет: для массовых синхронизаций выбирайте rsync; для одноразовых ручных переносов — sftp.
Критерии приёмки
- Установлено соединение и получен промпт sftp>.
- Файлы находятся в целевой директории на сервере/локальной машине.
- Контрольные суммы совпадают (если проверка применялась).
- Права доступа установлены согласно политике безопасности.
Частые ошибки и как их исправить
- Ошибка: Connection refused — проверьте, запущен ли SSHD и открыт ли порт 22.
- Ошибка: Permission denied — проверьте права и аутентификацию (ключи/пароли).
- Проблемы с путями — используйте lcd и lpwd для локального контекста, cd и pwd для удалённого.
Таблица команд‑шпаргалка
| Действие | Команда |
|---|---|
| Подключиться | sftp user@host |
| Список на сервере | ls |
| Список локально | lls |
| Текущая серверная папка | pwd |
| Текущая локальная папка | lpwd |
| Загрузить файл | put file |
| Загрузить каталог | put -r dir |
| Загрузить маску файлов | mput *.txt |
| Скачивать файл | get file |
| Скачивать маску файлов | mget *.html |
| Изменить права | chmod 644 file |
| Выйти | bye |
| Справка | help или ? |
Когда sftp не подходит
- Если требуется высокая производительность при одном TCP‑соединении и минимальная задержка — лучше рассмотреть другие решения, например специализированные ускорители передач или параллельные загрузчики.
- Для шаринга больших объёмов данных с браузерным интерфейсом удобнее использовать HTTPS‑доступ к объектному хранилищу.
Короткое резюме
Sftp — простой и безопасный инструмент для передачи файлов поверх SSH. Он пригоден и для ручной работы, и для автоматизации. Соблюдайте практики безопасности: используйте ключи, ограничьте пользователей и проверяйте целостность файлов.
Важно: sftp — часть набора OpenSSH. Для интеграции в пайплайны используйте пакетный режим и безопасные ключи.
Дополнительные ресурсы: документация OpenSSH, руководства по настройке sshd_config и статьи по chroot для SFTP.
Похожие материалы
Spatialize Stereo на AirPods — 3D‑звук на iPhone и Mac
Как подключить Bluetooth‑наушники к Windows
Добавление подарочной карты Amazon
Как стать лучше в соревновательных играх