Назад | Перейти на главную страницу

Как подключиться из curl (git-ftp) и FileZilla к vsftpd?

Следующий этот Учебник Мне удалось добавить к серверу возможность подключения FTPS.

Следуя шагу 6 в учебнике:

Он работает для FileZilla, но с curl кажется, что я не могу повторно использовать тот же сертификат, я загрузил файл сертификата с сервера и использую его так

$ curl -v --cert ~/.ssh/vsftpd.pem --user MYUSER:PASSWORD ftp://SERVER-IP
*   Trying SERVER-IP...
* TCP_NODELAY set
* Connected to SERVER-IP (SERVER-IP) port 21 (#0)
< 220 (vsFTPd 3.0.3)
> USER MYUSER
< 530 Non-anonymous sessions must use encryption.
* Access denied: 530
* Closing connection 0
curl: (67) Access denied: 530

С FTPS

$ curl -v --cert ~/.ssh/vsftpd.pem --user MYUSER:PASSWORD ftps://SERVER-IP
*   Trying SERVER-IP...
* TCP_NODELAY set
* Connection failed
* connect to SERVER-IP port 990 failed: Connection refused
* Failed to connect to SERVER-IP port 990: Connection refused
* Closing connection 0
curl: (7) Failed to connect to SERVER-IP port 990: Connection refused

Как я могу использовать один и тот же сертификат для FileZilla и curl (поскольку git-ftp использует curl) для загрузки файлов по FTPS?

Обновить

Добавление параметра --ftp-ssl:

*   Trying SERVER-IP...
* TCP_NODELAY set
* Connected to SERVER-IP (SERVER-IP) port 21 (#0)
< 220 (vsFTPd 3.0.3)
> AUTH SSL
< 234 Proceed with negotiation.
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /usr/local/etc/openssl/cert.pem
  CApath: /usr/local/etc/openssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: self signed certificate
* Closing connection 0
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Из-за того, что curl на macOS работает с базой данных в приложении Keychain Access, инструкции отличаются от тех, которые необходимы для Linux, я задокументировал инструкции Вот


Работа с git-ftp на клиенте macOS и vsftpd на сервере Linux

Создать сертификат и ключ SSL

$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout ~/.ssh/vsftpd.key -out ~/.ssh/vsftpd.crt

Добавьте сгенерированный сертификат в приложение Keychain Access.

$ security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.ssh/vsftpd.crt

Загрузите сертификат и ключ на сервер и скопируйте файлы в /etc/ssl/private/

Следуйте описанным шагам Вот, на шаге 6 используйте уже созданные сертификаты вместо создания новых

rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

После запуска vsftpd на сервере установите git-ftp

$ brew install git-ftp

Добавьте настройки сервера, используя ftpes для протокола

$ git config git-ftp.url "ftpes://<SERVER-IP>/path/to/repository/"
$ git config git-ftp.user "<FTP-USER>"
$ git config git-ftp.password "<FTP-PASSWORD>"
$ git config git-ftp.cacert "~/.ssh/vsftpd.crt"

Инициализировать git-ftp, и в этом случае репозиторий будет загружен в процессе инициализации.

$ git ftp init -v

После добавления дополнительных коммитов в репозиторий отправьте изменения в репозиторий ftp.

$ git ftp push -v

параметр локонов --cert используется для предоставления сертификата аутентификации клиента. Пока вы не аутентифицируетесь с помощью клиентских сертификатов, вам это не нужно.

Для использования ftps используйте --ftp-ssl параметр.