Как заставить 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.
похоже, что 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