Я установил два новых пакета CentOS 7 одновременно, поэтому конфигурации должны быть идентичными, просто разными IP-адресами и именами хостов.
Я установил VSFTPD и настроил для пассивных портов. Один ящик подключается нормально, никаких проблем, однако второй ящик постоянно меня бросает на эту ошибку:
GnuTLS error -15: An unexpected TLS packet was received.
Вот отладочная трассировка FileZilla:
Status: Connecting to 192.168.20.68:21... Status: Connection established, waiting for welcome message... Trace: CFtpControlSocket::OnReceive() Response: 220 (vsFTPd 3.0.2) Trace: CFtpControlSocket::SendNextCommand() Command: AUTH TLS Trace: CFtpControlSocket::OnReceive() Response: 234 Proceed with negotiation. Status: Initializing TLS... Trace: CTlsSocket::Handshake() Trace: CTlsSocket::ContinueHandshake() Trace: CTlsSocket::OnSend() Trace: CTlsSocket::OnRead() Trace: CTlsSocket::ContinueHandshake() Trace: CTlsSocket::OnRead() Trace: CTlsSocket::ContinueHandshake() Trace: CTlsSocket::OnRead() Trace: CTlsSocket::ContinueHandshake() Trace: TLS Handshake successful Trace: Protocol: TLS1.2, Key exchange: ECDHE-RSA, Cipher: AES-256-GCM, MAC: AEAD Status: Verifying certificate... Status: TLS connection established. Trace: CFtpControlSocket::SendNextCommand() Command: USER datamover Trace: CTlsSocket::OnRead() Trace: CFtpControlSocket::OnReceive() Response: 331 Please specify the password. Trace: CFtpControlSocket::SendNextCommand() Command: PASS ******* Trace: CTlsSocket::OnRead() Trace: CTlsSocket::Failure(-15) Error: GnuTLS error -15: An unexpected TLS packet was received. Trace: CRealControlSocket::OnClose(106) Trace: CControlSocket::DoClose(64) Trace: CFtpControlSocket::ResetOperation(66) Trace: CControlSocket::ResetOperation(66) Error: Could not connect to server
Ошибка всегда после проверки пароля.
Я знаю, что проблема НЕ SELinux, поскольку я отключил это. Проблема также не в брандмауэре, поскольку я попытался отключить Firewall Daemon (firewalld).
Вот соответствующая часть файла /etc/vsftpd/vsftpd.conf.
listen=YES listen_ipv6=NO pasv_enable=YES pasv_max_port=10100 pasv_min_port=10090 pasv_address=192.168.20.88 ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO ssl_ciphers=HIGH require_ssl_reuse=NO rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem
иlisten=YES listen_ipv6=NO pasv_enable=YES pasv_max_port=10100 pasv_min_port=10090 pasv_address=192.168.20.88 ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO ssl_ciphers=HIGH require_ssl_reuse=NO rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Я сделал поиск Google, но не видел никаких 15 кодов ошибок.
Мысли?
У меня была такая же ошибка после команды PASS в CENTOS 7. (Ошибка GnuTLS -15: был получен неожиданный пакет TLS.)
Мое решение следующее:
Я должен был добавить следующее к vsftpd.conf:
allow_writeable_chroot=YES chroot_local_user=YES local_root=/ftphome/$USER user_sub_token=$USER
Я отправляю этот ответ в надежде, что он может помочь кому-то в будущем, возможно, мне, поскольку я страдал от решения этой проблемы.
У меня не было local_root
в файле /etc/vsftpd/vsftpd.conf
правильно. Параметр указал на папку, которой не было.
Что из-за меня было то, что я видел ошибку в команде пароля в FileZilla, поэтому я подумал, что ей не нравится пароль. Что заставило меня думать в правильном направлении, так это то, что я нашел время, чтобы выяснить, почему я не получаю подробные журналы. Я не получил никаких журналов. Как только я начал получать журналы отладки, где я видел протоколы FTP, я увидел, что FTP-сервер ответил «ОК» на пароль. К сожалению, не было никаких протоколов, но я столкнулся с мыслью, что переговоры по локальному корню станут следующим шагом действий после аутентификации пароля. Я был прав, и это привело меня к проблеме.
Вот фрагмент кода в файле /etc/vsftpd/vsftpd.conf
, содержащий локальный корень.
# You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that # the user does not have write access to the top level directory within the # chroot) chroot_local_user=YES #local_root=/mnt/raid1 local_root=/ftproot #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd/chroot_list
Вот как я, наконец, включил подробное ведение журнала, хотя сейчас я отключу это, чтобы сохранить дисковое пространство и повысить производительность.
# Activate logging of uploads/downloads. xferlog_enable=YES # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. xferlog_std_format=NO log_ftp_protocol=YES # # Activate logging of uploads/downloads. xferlog_enable=YES
IMHO, я бы рассмотрел комментарий как ошибку, так как xferlog_enable больше, чем фактическая загрузка и загрузка файлов. Это свойство также включает ведение журнала. Исследование Google доказывает, что log_ftp_protocol=YES
требует xferlog_enable=YES
.
Я столкнулся с такой же ошибкой (ошибка: ошибка GnuTLS -15: был получен неожиданный пакет TLS.) И ударил головой, как час, но потом я понял, что домашний каталог ftp users, который был на томе Gluster, не был установлен. Объём и проблема с монтированной шкалой.