Что такое протокол передачи файлов SSH (SFTP)
09:58, 14.05.2024
Безопасность протокола передачи данных всегда была важной темой для самых разных пользователей. Именно поэтому старые протоколы, такие как FTPS и FTP, не так популярны, как более современный вариант - SFTP. SSH File Transfer Protocol - это отличный вариант, основанный на SSH, и обладающий множеством возможностей.
В этой статье мы углубимся в понимание SFTP и поделимся парой рекомендаций по проверке места для хранения. Также мы обсудим несколько полезных команд SFTP.
Обзор SSH и SFTP
Чтобы получить общее представление об основных характеристиках SFTP, давайте обсудим некоторые важные элементы, которые отличают этот протокол от других, а именно: безопасность данных, управление файлами для удаленных и локальных систем, аутентификация ключей, просмотр каталогов на стороне сервера и клиента, а также совместимость с большинством операционных систем. Если говорить конкретно о безопасности передачи данных, то функционирование SFTP опирается на протокол SSH для шифрования и дополнительной защиты.
В случае правильной аутентификации и авторизации SSH позволяет выполнять любые необходимые команды в оболочке.
В то же время, если говорить конкретно о SFTP, то он имеет довольно ограниченное количество доступных команд, которые явно связаны с передачей файлов. SFTP в большей степени ограничен SSH, чем другими протоколами, поэтому его не следует рассматривать как полностью отдельный протокол.
Механизм подсистемы SSH
Подсистема может работать на протоколе SSH в качестве слоя абстракции. Давайте практически объясним, как это можно сделать с помощью создания исполняемых файлов.
Создание исполняемых файлов для подсистем
Начнем с простого скрипта и поместим его в /usr/lib/openssh/:
$ cat /usr/lib/openssh/xid.sh
#!/usr/bin/env bash
hostname
$ chmod +x /usr/lib/openssh/xid.sh
Настройка подсистемы
Для настройки системы воспользуемся файлом /etc/ssh/sshd_config. Здесь мы устанавливаем xid в качестве подсистемы:
$ cat /etc/ssh/sshd_config
[...]
# override default of no subsystems
Subsystem xid /usr/lib/openssh/xid.sh
[...]
Настройка SFTP
Уточним, что SFTP-серверы также считаются подсистемой SSH. Кроме того, клиенты ssh и sftp практически эквивалентны при использовании параметра -s sftp:
$ ssh [...] -s sftp
Обзор команд SFTP
В зависимости от реализации SFTP на сервере, есть некоторые части, которые ограничены чистым SSH, и другие, которые являются SFTP. Это означает, что некоторые из них интегрированы в sshd, и в то же время другие являются отдельными, такими как sftp-server.
Основные команды для повседневного использования
Чтобы просмотреть все основные команды, поддерживаемые SFTP, вы можете воспользоваться справкой. Если набрать help в приглашении sftp, появится список с самыми важными пунктами о передаче, удалении и многом другом.
Вот несколько примеров, которые вы можете опробовать:
- chmod [-h] mode path - изменить права доступа к файлу 'path' на 'mode'
- version - просмотр текущей версии SFTP
- ? - эта команда может быть использована вместо help, и вы получите тот же результат
- chown [-h] own path - изменить владельца файла 'path' на 'own'
- bye - остановить SFTP
- cd path - изменить удаленный адрес на 'path'
- chgrp [-h] grp path - изменить группу файла
- !command - выполнить определенную команду, которую вы вставляете после '!' в локальной оболочке
Обновления и расширения функциональности SFTP
Спецификации SFTP доступны уже в различных версиях, начиная с 3-й и заканчивая 6-й. Однако, как правило, OpenSSH и некоторые другие SSH-серверы поддерживают только стандартную или 3-ю версию.
Конечно, это не проблема, и вы можете легко заменить эту версию по умолчанию на более предпочтительную, но в некоторых сценариях работа SSH и других версий может быть несовместима. С другой точки зрения, версия 3 может корректно поддерживать любой необходимый код, так что это совсем не проблема.
Специальные команды для специализированных задач
Поскольку этот тип протокола работает на серверах SSH, все команды должны выполняться через ssh. Например, чтобы проверить доступное хранилище на сервере, используйте следующую команду:
$ ssh jane@145.123.5.55 df
Проверки хранения данных в SFTP-среде
Проверки хранения данных в SFTP-среде чрезвычайно важны по целому ряду причин, но почему-то такие проверки не включены в начальную версию этого протокола.
По этой причине для проверок можно использовать реализацию statvfs. Итак, используйте команду df таким образом:
sftp > df -h
Если говорить о 6-й версии SFTP, то пользователи могут проверять хранилище сразу, без необходимости в ранее рассмотренной реализации. Вот несколько приложений, которые могут использовать такую функциональность:
- WinSCP
- ProFTPD
- Bitvise
Использование любого типа комбинации клиент-сервер будет достаточно для того, чтобы связаться с проверкой через определенную функцию.
Заключение
Здесь мы поделились несколькими практическими рекомендациями и полезными командами для SFTP и его правильного функционирования с SSH. Хотя не большинство функций этого протокола реализовано в большинстве серверов, вы вполне можете попробовать использовать расширения.