amazon web services - Kopiering af filer til en FTP-server på AWC EC2 Windows server mislykkes med 'Kan ikke opbygge dataforbindelse: Forbindelse ventetiden er udløbet'

Indlæg af Hanne Mølgaard Plasc

Problem



Vi skiftede til AWS-skyen med vores lokale byggemaskine. Nu er der en batch-fil, som skal uploade en fil via ftp. Dette fungerede fint lokalt, men ikke over EC2 AWS maskinen.


C:ProgrammeWinRARwinrar a -afzip -IBCK -ep "Tool\_\%date:~-2\%\%date:~-7,2\%\%date:~-10,2\%.zip" master
@echo Upload...
@echo open URL>ftp.txt
@echo USERNAME>>ftp.txt
@echo PASSWORD>>ftp.txt
@echo binary>>ftp.txt
@echo put TOOL\_\%date:~-2\%\%date:~-7,2\%\%date:~-10,2\%.zip "/downloads/Tool\%.zip">>ftp.txt
@echo quit>>ftp.txt
ftp -s:ftp.txt >out.txt


Det virker ikke ... Jeg åbnede i sikkerhedsgruppens indstillinger: Indgående og udgående porte 20-21, 1024-1048. Det uploader zip-arkivet med 0 bytes.


Logfilen siger:


ftp> open URL
Connection to URL was established.
220 FTP on server ready
200 UTF8 set to on
User (URL: (noone)):
331 Password required for USERNAME

230 user USERNAMElogged in
ftp> binary
200 type set to I
ftp> put Tool\_180418.zip "/downloads/Tool\_180418.zip"
200 PORT command successful
425 Unable to build data connection: The connection waiting time has expired
ftp> quit
221 goodbye.

Bedste reference


Windows kommandolinje ftp klient understøtter kun FTP aktiv tilstand. For at kunne bruge det skal du åbne porte på din lokale Windows-firewall. (Og måske udgående porte på AWS-forekomsten.)


Se min artikel om netværkskonfiguration for aktive og passive tilslutningsmetoder i FTP. [8]





Du må hellere bruge en anden FTP-klient, der understøtter en FTP-passiv tilstand, for hvilken du synes at have alt oprettet korrekt allerede.


For eksempel med WinSCP scripting kan du bruge en batchfil som: [9]


winscp.com /log=upload.log /command ^
    "open ftp://username:password@ftp.example.com/" ^
    "put TOOL\_\%\%TIMESTAMP#ddmmyy\%\%.zip /downloads/*" ^
    "exit"


Der er endda en guide til konvertering af Windows ftp.exe script til WinSCP script. [10]


WinSCP har også en indbygget \%TIMESTAMP\% syntaks, hvilket eksemplet ovenfor udnytter. Det er mere pålideligt end \%date\% og lettere at bruge. [11]


(Jeg er forfatter til WinSCP)

Andre referencer 1


Medmindre du specifikt har konfigureret din FTP-server til at bruge intervallet 1024-1048 til filoverførsel, vil det højst sandsynligt forsøge at bruge porte i området 1024-65535.


Du skal enten konfigurere din FTP-server, så den kun tillader forbindelser i det tilladte 24 portinterval, eller ellers åbner din sikkerhedsgruppe for hele rækken.


Rediger: Har du set dette meget nyttige svar?