FTPS AUTH 명령을 보내기 위해 cURL을 얻는 방법은 무엇입니까?

FTPS AUTH 명령을 보내기 위해 cURL을 얻는 방법은 무엇입니까?

이로 인해 오랫동안 두통이 발생했습니다.

상황: 인터넷에서 격리하는 프록시 뒤에 가상 머신이 있습니다. 프록시가 제대로 작동하는 것 같습니다.

cURL을 사용하여 인터넷을 통해 ZIP 파일(-T)을 FTP로 전송하고 싶습니다. FTP 서버는 SSL/TLS인 FTPS를 사용해야 합니다.

내 Windows 컴퓨터에서는 TotalCommander의 동일한 프록시(및 동일한 프록시 자격 증명)를 사용하여 사용하려는 FTP 서버에 대한 FTPS 세션을 성공적으로 설정할 수 있습니다.

따라서 FTP 서버와 프록시 서버를 구성하면 이러한 목적을 달성할 수 있다고 생각합니다.

내가 시도한 것:

기본적으로 다음 명령줄의 변형을 시도합니다.

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

cURL이 프록시에 대해 인증하고 FTP 서버에 연결을 시도할 수 있다는 자세한 출력을 볼 수 있습니다. 그러나 SQUID(프록시)에서 계속 오류가 발생합니다.

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

내가 목적지를 바꿀 때ftp:// 대신 ftps://를 사용하세요.그게 계속 나한테 말해주고 있어

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

Totalcommander FTP 세션의 로그를 보면 프록시에 대해 인증하는 것을 볼 수 있습니다. 그런 다음 FTP 서버에 접속하여 안전 모드로 변경하여 인증합니다.

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
....

내가 여기서 뭘 잘못하고 있는 걸까요?

이에 대해 조사한 결과 "--tlsv1" 옵션이 "AUTH SSL" 이전에 "AUTH TLS"를 보내야 한다는 게시물을 컬 메일링 리스트에서 찾았지만, 그렇게 하지 않은 것 같습니다. - -tlsv1 스위치를 사용하면 Squid는 "USER myftpuser"를 보내고 550 오류를 반환한다는 동일한 오류 메시지를 반환합니다.

cURL이 Totalcommander가 보내는 것으로 보이는 "AUTH TLS"를 강제로 보낸 다음 성공적으로 인증하는 방법이 있습니까?

aslmx님 정말 감사합니다

답변1

나는 그 옵션을 사용하는 것이 답이라고 생각합니다 --ftp-ssl.
나는 이것이 openssl이 이 옵션을 요구하는 방식과 유사하다고 생각합니다 -starttls ftp. 이는 FTP용 TLS가 HTTP 및 기타 프로토콜용 TLS와 다르기 때문에 필요합니다.

관련 정보