15 примеров SFTP команд для доступа к серверу

SFTP или Secure File Transfer Protocol - это безопасная утилита для удаленной передачи файлов, основанная на протоколе передачи файлов (FTP).

Трафик FTP не зашифрован и небезопасен, поэтому его заменили на SFTP.

SFTP работает по протоколу SSH по умолчанию на TCP-порту 22 и предлагает тот же набор возможностей безопасности и шифрования, что и SSH. SSH, работающий как часть сервера OpenSSH в системах Linux, по умолчанию поддерживает основные функции протокола SFTP, хотя доступно отдельное специальное программное обеспечение, vsftpd которое можно настроить для получения дополнительных функций и настроек.

В этой статье мы рассмотрим использование SFTP из командной строки. Я буду использовать систему Ubuntu, хотя перечисленные здесь команды будут работать в любой системе Linux с sftp клиентом.

Прежде чем переходить к командам, вы должны знать, что SCP устаревает, и в качестве альтернативы полезно ознакомиться с командой SFTP. С SFTP можно делать практически все, что и с SCP.

1. Копирование файлов

SFTP можно использоваться в качестве замены команды SCP (Secure Copy) в некоторых поддерживаемых случаях использования. Один из таких случаев - использование SCP для одновременной отправки или получения файлов с удаленного сервера. 

Синтаксис загрузки с помощью команды SCP выглядит следующим образом:

$ scp {local-path} {user}@{remote-host}:{remote-path}

А для скачивания из сервера вот так:

$ scp {user}@{remote-host}:{remote-file-path} {local-path}

Точно так же мы можем использовать следующий sftp синтаксис команды для загрузки файлов на удаленный сервер:

$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'

Ниже приведена демонстрация загрузки файлов с использованием sftp в качестве однострочного файла:

$ sftp ftpuser@192.168.1.231:/home/ftpuser/remote_test_dir <<< $'put /home/itgap/new_file'
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
Changing to: /home/ftpuser/remote_test_dir
sftp> put /home/itgap/new_file
Uploading /home/user/new_file to /home/ftpuser/remote_test_dir/new_file
/home/itgap/new_file                                                           100%    9     7.2KB/s   00:00
$

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

$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}

Вот демонстрация загрузки файла в одну строку с помощью sftp:

$ sftp ftpuser@192.168.1.231:/home/ftpuser/new_file1 /home/itgap/new_local_dir
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
Fetching /home/ftpuser/new_file1 to /home/itgap/new_local_dir/new_file1
/home/ftpuser/new_file1                                                               100%   12     3.6KB/s   00:00
$

2. Подключение к SFTP серверу

Чтобы инициировать SFTP-соединение, используйте sftp команду с именем пользователя и именем или IP-адресом удаленного хоста. Для этого должен быть открыт TCP-порт 22 по умолчанию, иначе явно укажите порт с помощью параметра -oPort.

Я подключаюсь к серверу SFTP с IP 192.168.1.231. При первом подключении к серверу SFTP вам будет предложено подтвердить отпечаток сервера, например SSH. После подтверждения нажатием yes соединение продолжается и запрашивает пароль пользователя.

$ sftp ftpuser@192.168.1.231
The authenticity of host '192.168.1.231 (192.168.1.231)' can't be established.
ECDSA key fingerprint is SHA256:k90E28Pfnjoiq1svFw18dA2mazweoCmR5Hqi8SH0mj0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.231' (ECDSA) to the list of known hosts.
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
sftp>

3. Проверить версию SFTP

Вы можете проверить версию SFTP, используя команду version в командной строке sftp.

sftp> version
SFTP protocol version 3
sftp>

4. Получить справку по SFTP

Чтобы получить справку о доступных командах и синтаксисе для SFTP, используйте параметры ? или help.

sftp> ?
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afpR] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afpR] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
reget [-fpR] remote [local] Resume download file
rename oldpath newpath Rename remote file
reput [-fpR] local [remote] Resume upload file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
sftp>

5. Показать рабочий каталог

При подключении к удаленному серверу вы можете показать текущий рабочий каталог удаленной системы с помощью команды pwd.

sftp> pwd
Remote working directory: /home/ftpuser
sftp>

Чтобы показать текущий рабочий каталог локальной системы, используйте команду lpwd.

sftp> lpwd
Local working directory: /home/itgap
sftp>

6. Получить список файлов

Вы можете вывести список файлов в удаленном рабочем каталоге с помощью команды ls.

sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Чтобы вывести список файлов в локальном рабочем каталоге, используйте команду lls.

sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

7. Изменение директории SFTP

Переключение удаленного рабочего каталога может быть выполнено с помощью команды cd.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> cd remote_test_dir
sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp>

Чтобы переключить локальный рабочий каталог, используйте команду lcd.

sftp> lpwd
Local working directory: /home/itgap
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lcd testdir
sftp> lpwd
Local working directory: /home/itgap/testdir
sftp>

8. Загрузить файлы

Чтобы загрузить один файл, используйте команду put.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/itgap
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> put file1
Uploading file1 to /home/ftpuser/file1
file1                                                                                                                                                                          100%    6     6.0KB/s   00:00
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Чтобы загрузить несколько файлов за один раз, мы можем использовать команду mput.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/itgap
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> mput file[23]
Uploading file2 to /home/ftpuser/file2
file2                                                                                                                                                                          100%    6     6.5KB/s   00:00
Uploading file3 to /home/ftpuser/file3
file3                                                                                                                                                                          100%    6     5.3KB/s   00:00
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

9. Скачать файлы с SFTP

Один файл с использованием SFTP можно загрузить с помощью команды get. Вот пример, где я скачал remote_file4 с помощью sftp:

sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp> lpwd
Local working directory: /home/itgap/testdir
sftp> ls
remote_file4
sftp> lls
file4
sftp> get remote_file4
Fetching /home/ftpuser/remote_test_dir/remote_file4 to remote_file4
/home/ftpuser/remote_test_dir/remote_file4                                                                                                                                     100%   13     5.2KB/s   00:00
sftp> lls
file4  remote_file4
sftp>

Чтобы загрузить несколько файлов, используйте команду mget. Я загружаю здесь все файлы, соответствующие шаблону remote_file * в удаленном рабочем каталоге, в мой локальный рабочий каталог.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/itgap/testdir
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
file4  remote_file4
sftp> mget remote_file*
Fetching /home/ftpuser/remote_file1 to remote_file1
/home/ftpuser/remote_file1                                                                                                                                                     100%   12     5.9KB/s   00:00
Fetching /home/ftpuser/remote_file2 to remote_file2
/home/ftpuser/remote_file2                                                                                                                                                     100%   13     5.8KB/s   00:00
Fetching /home/ftpuser/remote_file3 to remote_file3
/home/ftpuser/remote_file3                                                                                                                                                     100%   13     7.3KB/s   00:00
sftp> lls
file4  remote_file1  remote_file2  remote_file3  remote_file4
sftp>

10. Создать каталог

Новый каталог можно создать на удаленном сервере с помощью команды mkdir.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> mkdir new_dir
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

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

sftp> lpwd
Local working directory: /home/itgap
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lmkdir new_local_dir
sftp> lls
bin  file1  file2  file3  lib  new_local_dir  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

11. Удалить каталог

Пустой удаленный каталог можно удалить с помощью команды rmdir. Обратите внимание: если он не пуст, вы получите сообщение об ошибке.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rmdir new_dir
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

12. Удалить файл

Удаленный файл можно удалить с помощью команды rm.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rm remote_file3
Removing /home/ftpuser/remote_file3
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp>

13. Переименовать файл

Удаленный файл также можно легко переименовать с помощью команды rename.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp> rename remote_file1 new_file1
sftp> ls
file1            file2            file3            new_file1        remote_file2     remote_test_dir
sftp>

14. Использование файловой системы

Чтобы отобразить статистику для текущего каталога или файловой системы, используйте команду df. Мы можем использовать параметр -h, чтобы отображать статистику в удобочитаемом формате. Обратите внимание, что показанная статистика относится к соответствующей файловой системе удаленного SFTP-сервера, а не для файловой системы локального компьютера.

sftp> df
        Size         Used        Avail       (root)    %Capacity
    17811456      1845472     15965984     15965984          10%
sftp> df -h
    Size     Used    Avail   (root)    %Capacity
  17.0GB    1.8GB   15.2GB   15.2GB          10%
sftp>

15. Выйти из сеанса SFTP

Для выхода из режима SFTP сеанса, используйте bye, exit, или команду quit. После выхода из SFTP вы вернетесь к командной строке ОС.

sftp> exit
$

Заключение

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