Я пытаюсь получить свой Пеликан блог работает. Он использует lftp для передачи фактического блога на один сервер, но я всегда получаю сообщение об ошибке:
mirror: Fatal error: Certificate verification: subjectAltName does not match ‘blogname.com’
Я думаю, что lftp проверяет SSL, и при быстрой настройке Pelican просто забыл указать, что у меня нет SSL на моем FTP.
Это код в Makefile Pelican:
ftp_upload: $(OUTPUTDIR)/index.html
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
который отображается в терминале как:
lftp ftp://username@blogname.com -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"
До сих пор мне удалось отказаться от проверки SSL, изменив Makefile на:
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no" "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
Из-за неправильной реализации я правильно вошел в систему (lftp username@myblog.com:~>
), но функция с одной строкой больше не работает, и мне приходится вручную вводить команду зеркального отображения:
mirror -R /Volumes/HD/Users/me/Test/output/ /myblog_directory
Это работает без ошибок и тайм-аута. Вопрос в том, как это сделать с однострочником.
Вдобавок я пробовал:
set ssl:verify-certificate/ftp.myblog.com no
Этот трюк чтобы отключить проверку сертификата в lftp:
$ cat ~ / .lftp / rc установить ssl: verify-certificate no
Однако похоже, что в моем каталоге lftp нет папки «rc», поэтому это приглашение не работает.
-c команды
Выполните данные команды и выйдите. Команды можно разделять точкой с запятой (;
), И (&&
) или или (||
). Не забудьте правильно указать аргумент команды в оболочке. Эта опция должна использоваться отдельно без других аргументов.
Итак, вы хотите указать команды как один аргумент, разделенный точками с запятой:
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no; mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
Фактически вы можете опустить quit
командовать и использовать -c
вместо того -e
.
У меня была аналогичная проблема, хотя мой lftp имеет поддержку ssl, скомпилированную в (Fedora RPM). ssl:verify-certificate false
сделал трюк для меня.
echo "set ssl:verify-certificate no" >> ~/.lftp/rc
решит проблему, если вы не хочу сертификат для проверки
Что сработало для меня шаг за шагом с lftp:
openssl s_client -connect <ftp_hostname>:21 -starttls ftp
, в начале результата получилось что-то вроде -----BEGIN CERTIFICATE-----
MIIEQzCCAyu.....XjMO
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEQzCCAyu.....XjMO
-----END CERTIFICATE-----
в /etc/ssl/certs/ca-certificates.crt
/etc/lftp.conf
для всей системы set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt"
lftp
, в моем случае это lftp -u "${FTP_USER},${FTP_PWD}" ${FTP_HOST} -e "set net:timeout 10;mirror ${EXCLUDES} -R ${LOCAL_SOURCE_PATH} ${REMOTE_DEST_PATH} ; quit"
ssl:verfy-certificate false
у меня не сработало, я получал ошибку тайм-аута при "подключении к данным".
Я последовал за эти инструкция, добавив set ftp:ssl-allow false
к моему ~/.lftprc
файл.
Вдобавок я пробовал:
- установить ssl: verify-certificate / ftp.myblog.com нет
- это трюк для отключения проверки сертификата в lftp:
$ cat ~ / .lftp / rc установить ssl: verify-certificate no
Попробуйте использовать set ftp:ssl-allow no
; это сработало для меня как шарм.
Я также столкнулся с подобной ошибкой проверки сертификата ssl. Установка параметра verify-certificate на «нет» сработала для меня.
Пример:
lftp -c 'установить ftps: начальный-прот ""; установить ftp: ssl-force true; установить ftp: ssl-protect-data true; установить ssl: verify-certificate no; open -u Имя пользователя, Пароль 208.82.204.46; поместите uploadfilename; '
Я прочитал справочные страницы и нашел решение. Создать файл
~/.lftp/rc
и добавьте туда следующую строку:
set ssl:check-hostname false;
Нужна команда lftp: set ftp:ssl-allow no;
Вы можете выполнить команду сразу после выбора:
lftp www.yourdomain.com -u username,password -e "set ftp:ssl-allow no;"
или сохраните команду в ~/.lftprc
.
lftp -u username,password host -e "set ftp:ssl-allow no"
исправил проблему для меня
Решено с помощью этого:
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ssl:verify-certificate no; mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"
пример:
lftp ftp://username@blogname.com -e "set ssl:verify-certificate no; mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"