Я установил FTP- сервер (Ubuntu 13.04 / Picuntu 4.4), используя vsftpd. Простой FTP работает отлично. Чтобы защитить соединение, я добавил ssl- шифрование. Сервер принимает учетные данные для входа после того, как клиенты примут сертификат. Однако что-то идет не так на стороне клиента после команды LIST
.
Журнал FTP-клиента находится здесь:
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
- Я много раз обыскивал эту проблему на многих форумах, но нигде не нашел решения. После многих отчаянных попыток в течение многих дней я ищу здесь какое-то руководство. Соединение является пассивным, простота сервера задает внешний IP-адрес для клиента, а также указывает порты в узком диапазоне, то есть 3000-3030 Файл конфигурации VSFTPD находится здесь :
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
Я установил правильную переадресацию портов в маршрутизаторе, то есть порт 21, а также порты в диапазоне 3000-3030 перенаправляются на сервер. Также, всякий раз, когда я пытаюсь подключиться к серверу из любого места, я вижу, что порт, назначенный сервером, находится в диапазоне 3000-3030 (например, в приведенном выше сообщении 11 * 256+200 = 3016!)