lftp – консольный FTP клиент

  • установка lftp
  • подключение к удалённому серверу
  • создание закладок для быстрого подключения
  • lftprc авторизация через публичный ключ
  • пример копирования директории с локальной на удалённую машину

Зачем?

Бывают случаи когда нужно быстро, отправить или получить пачку файлов на некий удалённый сервер, без доступа к GUI, либо неким образом автоматизировать процесс отправки или получения. И для этих целей вполне могут помочь простые и проверенные временем ftp-клиенты. которые просты и требуют только наличие терминала и ssh-соединения. В этой статье рассказывается о базовых возможностях одного из таких lftp-клиентов. Как им пользоваться в общих чертах и как настроить для удобного и быстрого взаимодействия с ftp-сервером, в том числе для авторизации через публичные ssh-ключи

Установка

sudo apt-get update && sudo apt-get install lftp

Подключение к удалённому серверу

$ lftp ftp://ftp.remotehost.com

Дальше команды идут внутри оболочки lftp

Авторизация

lftp ftp.remotehost.com:~>
lftp ftp.remotehost.com:~> login username password

после успешной авторизации вывод внутри lftp будет примерно такой

lftp username@ftp.remotehost.com:~>

Пример авторизации через shell-команду прямо из консоли

$ lftp ftp://ourusername:ourpassword@ftp.remotehost.com

Как подключиться к нужному удалённому серверу изнутри lftp:
здесь символ $ говорит о том что это команда оболочки ОС. lftp :~> – это приветствие ввода интерактивного режима внутри lftp-клиента.

$ lftp                                 

lftp :~> open ftp://ftp.remotehost.com
lftp :~> open ftp://ftp.host.com --user name --password secret

Закладки (Bookmarks)

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

Пути где lftp хранит файлы c закладками(bookmarks)

~/.local/share/lftp/bookmarks
~/.lftp/bookmarks

конфигурационные файлы

~/.lftprc или \~/.lftp/rc   - уровень конкретного пользователя
/etc/lftp.conf               - уровень всей системы

Создание закладки (bookmark add)

Чтобы создать новую закладку внутри интерактивного сеанса(внутри lftp):

lftp :~> bookmark add remotehost ftp://ouruser:ourpassword@ftp.remotehost.com

Здесь в качестве части url-а указывается все данные для аутентификации – логин и пароль

Обрати внимание что при таком подходе пароль будет хранится в одном из bookmark-файлов. Причем в открытом виде, т.е. в виде обычного текста. Более безопасно можно настроить подключение по публичному-ключу с парольной фразой.

~/.local/share/lftp/bookmarks
~/.lftp/bookmarks)

Текущее подключение в закладки

Находясь в подключении к удалённому серверу можно сохранить это
подключение в закладки

lftp user@ftp.remotehost.com:~> bookmark add remotehost
lftp user@ftp.remotehost.com:~> exit

здесь первой командой создали новую закладку с именем remotehost
дальше выходим из интерактивного сеанса lftp обратно в оболочку ОС.
Теперь имея новую созданную закладку можно подключится в то же самое место. Причем несколькими способами.

1. Прямо из консоли. Войти в интерактивный режим сразу подключившись к нужному узлу по данным сохранённым в указанной закладке(здесь это имя “remotehost”)

$ lftp remotehost
lftp user@ftp.remotehost.com:~> exit

2. Изнутри интерактивного сеанcа lftp.

$ lftp
lftp:~> open remotehost

Другие команды для работы с закладками (изнутри lftp)

  • bookmark edit – редактировать закладки через текстовый редактор
  • bookmark del <имя-закладки> – удалить
  • bookmark list – показать список всех имеющихся закладок

Авторизация по публичному ключу

Подключаться на удалённый сервер открыто отсылая пароль не лучшее решение. Более надёжный и безопасный способ – это настроить аутентификацию по публичному ключу с passphrase(парольной фразой)

По умолчанию lftp для подключения к серверу использует ssh команду

ssh -a -x

А это значит что можно подкорректировать эту команду указа какой публичный ключ использовать для аутентификации на сервере.

ssh -a -x -i <public-keyfile>
  • команда в интерактивном режиме(внутри lftp)
set sftp:connect-program "ssh -a -x -i <keyfile>"
  • используя связку команд для команды lftp (из оболочки ОС):
lftp -c 'set sftp:connect-program "ssh -a -x -i <keyfile>"; \
  connect sftp://user@example.com; mirror -eR files; ...'
  • Через конфиг файл ~/.lftprc

Более надёжный и удобный способ – прописать команду подключения добавив следующую строчку в файл ~/.lftprc

set sftp:connect-program "ssh -a -x -i /full/path/to/yourprivatekeyfile"

Теперь для подключения нужно будет указывать парольную фразу назначенную для ключа (youprivatekeyfile). Вот как это будет выглядеть.

lftp sftp://user@host.com
Password:  # type here your passphrase
lftp user@host.com:/>

Здесь идёт подключение от лица пользователя user к хосту host.com при этом для авторизации отсылается публичный ключ указанный в ~/.lftprc

Ускорить и упростить такое подключение можно через закладки.
Создав закладку с коротким именем(если используется часто) и подключаться сразу к нужному серверу в нужном каталоге. Пример

user@debian:~/v$ lftp hs
Password: 
cd ok, cwd=/video/study                                       
lftp user@ftp.somenetwork.org:/video/study> 

Зеркало (Mirror)

Если нужно быстро скопировать на сервер сразу всё что находится в текущем каталоге можно воспользоваться командой `mirror`

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

Для того чтобы наоборот закачать на удалённый сервер с локальной машины нужно использовать флаг `mirror -R`. Пример

cd ~/shared/new_videos

$ lftp hs
Password:
cd ok, cwd=/video/study
lftp user@ftp.somenetwork.org:/video/study> !pwd
/home/user/shared/new_video

lftp user@ftp.somenetwork.org:/video/study> pwd
sftp://user@ftp.somenetwork.org/video/study

lftp user@ftp.somenetwork.org:/video/study> ls
sftp://user@ftp.somenetwork.org/video/study
drwxrwxrwx    1 root     root          754 Jun 10 16:16 .
drwxrwxrwx    1 root     root           66 Jun 19 16:16 ..
drwxrwxrwx    1 user     users        1356 Jun 22  2023 cicd
drwxrwxrwx    1 user     users          20 Apr 10 14:33 databases
drwxrwxrwx    1 user     users         150 Apr 10 14:45 devops
...

lftp user@ftp.somenetwork.org:/video/study> mkdir new_videos
lftp user@ftp.somenetwork.org:/video/study> cd new_videos
lftp user@ftp.somenetwork.org:/video/study/new_videos> mirror -R
  • сначала переходим в нужный каталог который хотим отправить на сервер
  • затем подключаемся к серверу по закалдке через ключ указывая парольную фразу
  • внутри интерактивного сеанса lftp можно выполнять команды для локальной ОС здесь проверяем текущий каталог через !pwd
  • смотрим какие файлы есть на удалённом сервер через ls
  • создаём на удалённом сервере новый каталог переходим в него
  • и через mirror -R копируем всё из текущего локального каталога в текущий удалённый

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.