Eu configurei o servidor ftp (Ubuntu 13.04 / Picuntu 4.4) usando vsftpd . O FTP simples funciona perfeitamente bem. Para garantir a conexão, adicionei a criptografia ssl . O servidor aceita as credenciais de login, depois que os clientes aceitam o certificado. No entanto, algo dá errado no lado do cliente após o comando LIST
.
O registro do cliente FTP está aqui:
Status: Resolving address of my_website.info
Status: Connecting to 93.123.456.789:21...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to My Website.
Command: AUTH TLS
Response: 234 Proceed with negotiation.
Status: Initializing TLS...
Status: Verifying certificate...
Command: USER ftpuser1
Status: TLS/SSL connection established.
Response: 331 Please specify the password.
Command: PASS ******
Response: 230 Login successful.
Command: SYST
Response: 215 UNIX Type: L8
Command: FEAT
Response: 211-Features:
Response: AUTH TLS
Response: EPRT
Response: EPSV
Response: MDTM
Response: PASV
Response: PBSZ
Response: PROT
Response: REST STREAM
Response: SIZE
Response: TVFS
Response: UTF8
Response: 211 End
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Command: PBSZ 0
Response: 200 PBSZ set to 0.
Command: PROT P
Response: 200 PROT now Private.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/"
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (93,123,456,789,11,200).
Command: LIST
Response: 150 Here comes the directory listing.
Error: Connection timed out
Error: Failed to retrieve directory listing
Eu tenho procurado muito em muitos fóruns sobre este problema, mas nenhuma solução foi encontrada em qualquer lugar. Depois de muitas tentativas desesperadas por muitos dias, estou procurando alguma orientação aqui. A conexão é passiva, o servidor explicitamente especifica o endereço IP externo para o cliente, bem como especifica as portas em um intervalo estreito, ou seja, 3000-3030 O arquivo de configuração VSFTPD está aqui :
listen=YES
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
chroot_list_enable=NO
pam_service_name=ftp
check_shell=NO
ftpd_banner=Welcome to my website.
userlist_enable=YES
userlist_deny=NO
max_clients=5
max_per_ip=2
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=3030
pasv_address=93.123.4xx.7xx # (external IP address of the server)
pasv_addr_resolve=NO
write_enable=NO
ssl_enable=YES
force_local_logins_ssl=YES
force_local_data_ssl=YES
ssl_tlsv1=YES
rsa_cert_file=/etc/ssl/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/ssl/vsftpd/vsftpd.pem
Configurei o encaminhamento de porta adequado no roteador, ou seja, a porta 21 e as portas no intervalo 3000-3030 são encaminhadas para a máquina do servidor. Além disso, sempre que tento conectar-me ao servidor de qualquer local, vejo que a porta atribuída pelo servidor está no intervalo de 3000 a 3030 (por exemplo, na mensagem acima 11 * 256 + 200 = 3016!)