como fazer cURL enviar comando AUTH para FTPS?

0

isso está causando dor de cabeça há muito tempo.

Situação: Eu tenho uma máquina virtual que fica atrás de um proxy que protege a internet. O proxy parece funcionar bem.

Eu quero usar o cURL para transferir (-T) um arquivo ZIP para um FTP na internet. O servidor FTP requer FTPS, ou seja, SSL / TLS a ser usado.

Da minha máquina Windows eu posso usar o mesmo Proxy (e as mesmas credenciais de proxy) dentro do TotalCommander para estabelecer com sucesso uma sessão FTPS para o Servidor FTP que eu quero usar.

Então eu acho que o servidor FTP, bem como o Proxy Server, estão configurados para o propósito.

O que eu tentei:

Basicamente eu tento variações da seguinte linha de comando:

curl -vvv --ssl -T /path/to/my/file.zip ftp://my.ftpserver.com:21 --user USER:PASSWORD -x https://proxyuser:[email protected]:3128

Eu vejo na saída detalhada, que cURL pode autenticar contra o proxy e tenta se conectar ao servidor FTP. No entanto, continua recebendo um erro de SQUID (o proxy) que

Squid sent the following FTP command:
USER myftp user

The server responded with:
You must issue the AUTH command to change to an encrypted session before you can attempt to login.
550-This server requires encryption

Quando eu mudo o destino para usar ftps: // ao invés de ftp: // ele continua me dizendo

curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received.

Quando olho para o log da sessão FTP do Totalcommander, vejo que ele é autenticado em relação ao Proxy. Em seguida, conecta-se ao servidor FTP e, em seguida, muda para o modo seguro para autenticação.

220-Welcome to Company-FTP
220 Company-FTP Server ready!
AUTH TLS
234 Changing to secure mode...
(cert stuff)
USER myftpuser
331 Username OK. Need password.
PASS **********
230 Password oK. Connected. logged in
....

O que eu poderia fazer de errado aqui?

Eu pesquisei isso um pouco e encontrei um post na lista de discussão curl que a opção "--tlsv1" deveria enviar "AUTH TLS" primeiro antes de "AUTH SSL", no entanto eu não acho que seja feito, porque mesmo se eu use o switch --tlsv1, o Squid voltará com a mesma mensagem de erro dizendo que ele enviou "USER myftpuser" e obteve o erro 550 de volta.

Existe uma maneira de forçar o cURL a enviar este "AUTH TLS" que o Totalcommander parece enviar e, em seguida, as autorizações com sucesso?

Muito obrigado aslmx

    
por aslmx 09.04.2018 / 10:10

0 respostas

Tags