SFTP (SSH File Transfer Protocol): Что Это Такое и Как Его Использовать

SFTP (SSH File Transfer Protocol): Что Это Такое и Как Его Использовать

FTP — это стандартный метод передачи файлов или других данных между компьютерами, однако с каждым днём он становится всё более устаревшим, учитывая современные стандарты безопасности. К счастью, именно здесь на помощь приходит SFTP, который пользователи VPS-хостинга найдут особенно полезным.

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

Как подключиться к серверу по SFTP?

SFTP — это подсистема SSH. Следовательно, этот протокол поддерживает все методы аутентификации SSH. Хотя настроить и использовать аутентификацию по паролю намного проще, вход в систему с помощью ключей SSH по SFTP без пароля намного безопаснее.

Подробную информацию о том, как настроить ключи SSH можно найти в этом руководстве. Когда вы будете готовы, выполните следующие действия, чтобы подключиться по SFTP:

  1. Проверьте свой доступ по SSH с помощью одной из следующих команд:
    ssh user@server_ipaddress
    ssh user@remotehost_domainname
  2. Выйдите из сеанса, если ошибок не возникло.
  3. Инициируйте SFTP-соединение с помощью следующих команд:
    sftp user@server_ipaddress
    sftp user@remotehost_domainname
  4. Если вы используете собственный порт SSH, используйте одну из этих команд, чтобы изменить порт SFTP:
    sftp -oPort=customport user@server_ipaddress
    sftp -oPort=customport user@remotehost_domainname
  5. Вот как это должно выглядеть:
    sftp -oPort=49166 user@31.220.57.32

После подключения вы увидите командную оболочку SFTP.

Как передавать файлы по SFTP?

Здесь мы покажем вам, как передавать удалённые файлы в локальную систему и наоборот с помощью SFTP.

Обратите внимание! Вы также можете передавать файлы с помощью SFTP-клиентов, таких как WinSCP или FileZilla. Если вас интересует последний, ознакомьтесь с нашим руководством на эту тему.

Передача удалённых файлов с сервера в локальную систему

Для начала давайте проверим, какие локальный и удалённый рабочие каталоги мы используем. Для этого воспользуемся следующими командами SFTP:

sftp> lpwd
Local directory: /LocalDirectory
sftp> pwd
Remote directory: /RemoteDirectory

Теперь давайте посмотрим, как передать файл с удалённого сервера на локальный компьютер с помощью команды get. Вот основной синтаксис команды get:

get /RemoteDirectory/filename.txt

Например, чтобы скопировать файл /etc/xinetd.conf с удалённого сервера на локальный компьютер, вы должны использовать команду:

get /etc/xinetd.conf

По завершению загрузки вы найдёте файл xinetd.conf в каталоге /user/home на вашей локальной машине.

Чтобы загрузить по SFTP несколько файлов, используйте команду mget. Для загрузки в текущий рабочий каталог все файлы из каталога /etc с расширением .conf, воспользуйтесь следующей командой:

mget /etc/*.conf

После загрузки вы найдёте все файлы *.conf в каталоге /user/home на вашем компьютере.

Передача файлов с локального компьютера на удалённый сервер

Чтобы скопировать файл с локального компьютера на удалённый сервер, мы снова воспользуемся командой get. В этом случае синтаксис команды get будет следующим:

get file.txt /RemoteDirectory

Чтобы переместить файл example.txt с локальной машины на удалённую, введите следующую команду:

put /home/user-name/example.txt /root

Теперь мы найдём файл в корневом каталоге удалённого сервера. Вы также можете попробовать передать несколько файлов с помощью команды mput. Работает почти так же, как mget:

mput /home/user-name/*.txt /root

Эта команда переместит все файлы с расширением .txt в папке /home/user-name с локального компьютера на удалённый в каталог /root.

Обратите внимание! Для загрузки и выгрузки файлов по SFTP вам нужно будет ввести команду put или get и нажать клавишу TAB.

Команды для навигации по SFTP

Некоторые команды можно использовать для более эффективной навигации по удалённым и локальным серверам с помощью SFTP. Они похожи на те, которые вы бы использовали в командной строке Linux.

Например, команда pwd всегда поможет узнать, в каком рабочем каталоге вы находитесь.

sftp> pwd
Remote directory: /RemoteDirectory

или

sftp> lpwd
Local directory: /LocalDirectory

Вы также можете вывести список файлов и каталогов, которые вы используете для удалённого каталога:

ls

Аналогично для локального рабочего каталога:

lls

Вывод будет выглядеть примерно так:

Pictures     Templates     Media     Text.txt     Documents

Чтобы переключиться из одного удалённого рабочего каталога на другой локальный рабочий каталог, введите следующие команды:

cd name_of_directory
lcd name_of_directory

Наконец, используйте ! и команды exit, чтобы вернуться в локальную оболочку и выйти из SFTP.

Основы обслуживания файлов с использованием SFTP

SFTP также позволяет управлять каталогами и файлами с помощью определённых команд.

Чтобы проверить дисковое пространство удалённого сервера в гигабайтах, используйте функцию df следующим образом:

df -h

Вот пример вывода:

Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop29212p1   59G  2.5G   56G   5% /
none               1.5G     0  1.5G   0% /sys/fs/cgroup
none               1.5G     0  1.5G   0% /dev
tmpfs              1.5G     0  1.5G   0% /dev/shm
tmpfs              1.5G  568K  1.5G   1% /run
tmpfs              308M     0  308M   0% /run/user/0

Используйте команду mkdir, чтобы создать новый каталог на удалённом или локальном сервере:

mkdir name_of_directory
lmkdir name_of_directory

Вы можете удалить его с удалённого сервера с помощью команды rmdir:

rmdir name_of_directory

Переименовать удалённый файл тоже довольно просто:

rename filename new_filename

Вот пример:

rename Old_FileExample New_FileExample

Если вы хотите удалить удалённый файл, используйте команду rm:

rm filename

В то время как команда chown используется для замены владельца файла:

chown userid filename

Значением userid может быть либо имя пользователя, либо числовой идентификатор пользователя. Например:

chown UserOne FileExample
chown 1234 FileExample

chgrp используется для изменения владельца группы файла:

chgrp groupid filename

Например:

chgrp NewGroup FileExample

Наконец, вам нужно будет использовать интерактивную команду chmod, чтобы изменить права доступа к файлу:

chmod 764 FileExample

В этом примере трёхзначное значение обозначает пользователя, группу и других пользователей файла.

Что касается разрешений на чтение (r), запись (w) и выполнение (x), их значения равны 4, 2, 1 соответственно. 0 также может использоваться, чтобы не предоставлять никаких разрешений.

Чтобы назначить разрешения, просто вычислите общие значения для каждого класса пользователей. Вот подробный пример:

chmod ugo FileExample
# u сокращение от user, представляет пользователя, который сможет читать, записывать и выполнять файл.
# g сокращение от group, предназначен для групп, здесь мы дали разрешение на запись и выполнение файла.
# o или others (дрегие) смогут только читать файл.

Список полезных команд SFTP

Если вам нужна шпаргалка, вот список всех доступных команд SFTP. Вы можете найти этот список самостоятельно, просто введя команду вызова справки help или ? — обе предложат один и тот же результат.

bye                                Выйти из sftp
cd path                            Изменить удалённый каталог на 'path'
chgrp [-h] grp path                Изменить группу файла 'path' на 'grp'
chmod [-h] mode path               Изменить права доступа к файлу 'path' на 'mode'
chown [-h] own path                Изменить владельца файла 'path' на 'own'
df [-hi] [path]                    Показать статистику для текущего каталога или 
                                   файловой системы, содержащей 'path'
exit                               Выйти из sftp
get [-afpR] remote [local]         Скачать файл
help                               Показать текст этой справки
lcd path                           Изменить локальный каталог на 'path'
lls [ls-options [path]]            Показать список содержимого локального каталога
lmkdir path                        Создать локальный каталог
ln [-s] oldpath newpath            Связать удалённый файл (-s означает symlink, или символическую ссылку)
lpwd                               Распечатать локальный рабочий каталог
ls [-1afhlnrSt] [path]             Показать список содержимого удалённого каталога
lumask umask                       Установить для маски пользователя значение 'umask'
mkdir path                         Создать удалённый каталог
progress                           Показать индикатор прогресса
put [-afpR] local [remote]         Зарузить файл
pwd                                Показать удалённый рабочий каталог
quit                               Выйти из sftp
reget [-fpR] remote [local]        Возобновить скачивание файла
rename oldpath newpath             Переименовать удалённый файл
reput [-fpR] local [remote]        Возобновить загрузку файла
rm path                            Удалить удалённый файл
rmdir path                         Удалить удалённый каталог
symlink oldpath newpath            Создать символическую ссылку к удалённому файлу
version                            Показать версию SFTP
!command                           Выполнить 'command' в локальной оболочке
!                                  Перейти в локальную оболочку

Что такое SFTP?

SFTP, или SSH File Transfer Protocol — более безопасный способ передачи файлов. Используя протокол SSH, он поддерживает шифрование и другие методы безопасности для лучшей защиты передачи файлов. Это единственный безопасный протокол, который защищает от атак на любом этапе процесса передачи данных.

Во время передачи файлов все данные разделяются на пакеты и отправляются через единое безопасное соединение.

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

Только получатель с требуемым ключом дешифрования сможет увидеть исходный контент. Это предотвращает любой несанкционированный доступ к данным во время передачи файлов.

Обычный протокол передачи файлов (FTP) имеет два разных канала для обмена данными — командный канал и канал даных. SFTP имеет только один зашифрованный канал, по которому данные передаются зашифрованными, отформатированными пакетами.

Заключение

В этом руководсве мы охватили основы использования SFTP для безопасной передачи файлов. Мы надеемся, что эта статья была вам полезной. Однако, если вам нужна дополнительная информация только о FTP, вы можете найти больше руководств здесь.

Также, если у вас возникли вопросы, не стесняйтесь оставлять их в комментариях ниже.

Author
Автор

Olha L.

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.