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, а также функции графического интерфейса и поддерживается на разных платформах.