Как заставить lftp использовать механизм безопасности SSL / TLS из командной строки?

Я пытаюсь войти в ftps сайт. Я попытался дать логин creds в командной строке (и положить set параметры ~/.lftprc, затем открыв lftp сессия и ввод этих параметров с lftp операторы управления работой. Несмотря на это, я продолжаю ударять по тому же блокпосту:

 421 Sorry, cleartext sessions are not accepted on this server.
 Please reconnect using SSL/TLS security mechanisms.

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

как сделать lftp использовать механизм безопасности SSL/TLS из командная строка?

цель состоит в том, чтобы сценарий доступа к этому сайту ftps с помощью bash (Программирование без использования expect).

 lftp
 lftp :~> set ssl-allow false
 lftp :~> set passive-mode yes
 lftp :~> open ftp.abc.com
 lftp ftp.abc.com:~> login theuser
 Password:
 lftp theuser@ftp.abc.com:~> cd
  `cd' at 0 [Delaying before reconnect: 26]
 CTRL-C
 lftp theuser@ftp.abc.com:~> debug
 lftp theuser@ftp.abc.com:~> cd
 ---- Connecting to ftp.abc.com (XX.XXX.XX.XX) port 21
 <--- 220-Welcome to the Yahoo! Web Hosting FTP server
 <--- 220-Need help? Get all details at:
 <--- 220-http://help.yahoo.com/help/us/webhosting/gftp/
 <--- 220-
 <--- 220-No anonymous logins accepted.
 <--- 220-Yahoo!
 <--- 220-Local time is now 15:30. Server port: 21.
 <--- 220-This is a private system - No anonymous login
 <--- 220 You will be disconnected after 5 minutes of inactivity.
 ---> FEAT
 <--- 211-Extensions supported:
 <---  EPRT
 <---  IDLE
 <---  MDTM
 <---  SIZE
 <---  MFMT
 <---  REST STREAM
 <---  MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
 <---  MLSD
 <---  XDBG
 <---  AUTH TLS
 <---  PBSZ
 <---  PROT
 <---  TVFS
 <---  ESTA
 <---  PASV
 <---  EPSV
 <---  SPSV
 <---  ESTP
 <--- 211 End.
 ---> OPTS MLST type;size;modify;UNIX.mode;UNIX.uid;UNIX.gid;
 <--- 200  MLST OPTS type;size;sizd;modify;UNIX.mode;UNIX.uid;UNIX.gid;unique;
 ---> USER theuser
 <--- 421 Sorry, cleartext sessions are not accepted on this server.
 Please reconnect using SSL/TLS security mechanisms.

5 ответов


lftp: ~ > установить ssl-разрешить false

вы явно установили ssl-allow на false. Но это должно быть верно, если lftp должен попытаться использовать SSL.


возможно, Вам понадобится

set ssl:verify-certificate no

похоже, что lftp не настроен правильно на многих системах, что делает его неспособным проверять сертификаты сервера (производя Fatal error: Certificate verification: Not trusted).

в интернете (и ответы в этом посте) полно предложений, чтобы исправить это, отключив проверку сертификата или шифрование вообще. Это незащищенное поскольку это позволяет атакам "человек-в-середине" пройти незамеченными.

лучшее решение-правильно настроить проверку сертификата, что легко, к счастью. Для этого добавьте следующую строку в /etc/lftp.conf (или ~/.lftp/rc или ~/.config/lftp/rc):

set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"

ca-certificates.crt - это файл, содержащий все сертификаты CA системы. Расположение, используемое выше, является одним из Ubuntu и может варьироваться в разных системах. Чтобы создать или обновить файл, запустите update-ca-certificates:

sudo update-ca-certificates

если в вашей системе нет этой команды, вы можете создать ее вручную следующим образом:

cat /etc/ssl/certs/*.pem | sudo tee /etc/ssl/certs/ca-certificates.crt > /dev/null

задание ftp:ssl-allow true не работает для меня.

введя set:

lftp :~> set

я заметил:

set ftp:ssl-allow true
set ftp:ssl-allow/XXX.XXX.XXX.XXX no

С XXX.XXX.XXX.XXX будучи сервером, я входил в систему.

таким образом, окончательный набор команд, которые мне нужны были:

lftp :~> set ftp:ssl-allow true
lftp :~> set ftp:ssl-allow/XXX.XXX.XXX.XXX true
lftp :~> set ssl:verify-certificate no

версия lftp должна быть >= 4.6.3 (пользователь Debian)