Nastavil jsem dvě nová pole CentOS 7 současně, takže konfigurace by měly být identické, jen odlišné IP adresy a názvy hostitelů.
Nainstaloval jsem VSFTPD a nakonfiguroval jsem pasivní porty. Jedno pole se připojuje dobře, žádné problémy, ale druhé pole mi neustále zobrazuje tuto chybu:
GnuTLS error -15: An unexpected TLS packet was received.
Zde je ladicí stopa 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
Chyba je vždy hned po kontrole hesla.
Vím, že problém NENÍ SELinux, protože jsem to deaktivoval. Problém také není v bráně firewall, protože jsem se pokusil deaktivovat démona brány firewall (firewalld).
Zde je příslušná část souboru /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
Vyhledal jsem Google, ale neviděl jsem 15 chybových kódů.
Myšlenky?
Odpověď
Měl jsem stejnou chybu po příkazu PASS v CENTOS 7. (Chyba GnuTLS -15: Byl přijat neočekávaný paket TLS.)
Moje řešení je následující:
Musel jsem přidat následující do vsftpd.conf:
allow_writeable_chroot=YES chroot_local_user=YES local_root=/ftphome/$USER user_sub_token=$USER
Komentáře
- Děkuji, za můj soubor /etc/vsftpd.conf přidávám: user_sub_token = $ USER a nyní nemám chybu GNUTLS -15 Právě teď mám další chybu: Nelze navázat datové připojení: ECONNREFUSED – připojení odmítnuto serverem
- vyřešil jsem ve svém souboru /etc/vsftpd.conf, dal jsem stejnou hodnotu pro “ listen_address = 192.168.1.2 “ & “ pasv_address = 192.168.1.2 “ přidám toto poslední a funguje, potřebuji to: D
- V mém případě jsem měl local_root ukazující na chybějící adresář – když jsem tuto proměnnou upravil, chyba 15. byla pryč.
Odpověď
Zveřejňuji tuto odpověď v naději, že by to mohlo někomu v budoucnu pomoci, možná i mně, protože jsem tento problém vyřešil.
Neměl jsem local_root
v soubor /etc/vsftpd/vsftpd.conf
nastaven správně. Nastavení ukazovalo na složku, která neexistovala.
To, co skrze mě bylo, že jsem viděl chybu v příkazu heslo v FileZilla, tak jsem si myslel, že se jí nelíbí heslo. To, co mě přimělo přemýšlet správným směrem, bylo, že jsem si našel čas na prozkoumání, proč nedostávám podrobné protokoly. Nedostal jsem žádné protokoly. Jakmile jsem začal přijímat protokoly o ladění, kde jsem viděl protokoly FTP, viděl jsem, že server FTP řekl OK na heslo. Bohužel nedošlo k žádnému protokolování, ale narazil jsem na myšlenku, že vyjednávání o místním kořenovém adresáři bude dalším postupem po ověření hesla. Měl jsem pravdu a to mě vedlo k problému.
Zde je fragment kódu v souboru /etc/vsftpd/vsftpd.conf
, který obsahuje lokální root.
# 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
Zde je ukázka toho, jak jsem nakonec zapnul podrobné protokolování, které však nyní vypnu, abych ušetřil místo na disku a zlepšil výkon.
# 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, považoval bych komentář za chybu, protože xferlog_enable je více než samotné nahrávání a stahování souborů. Tato vlastnost také zapne protokolování. Výzkum společnosti Google prokázal, že log_ftp_protocol=YES
vyžaduje xferlog_enable=YES
.
Komentáře
- Právě jsem narazil na stejnou past kvůli překlepu. Problém se vyřešil nastavením platného adresáře local_root.
Odpověď
Čelil jsem přesně stejné chybě (Chyba: chyba GnuTLS -15: Byl přijat neočekávaný paket TLS.) A bouchal mi hlavu asi hodinu, ale pak jsem zjistil, že domovský adresář uživatelů ftp, který byl na svazku Gluster, nebyl připojen. Připojený svazek Gluster a problém vyřešen.
Odpověď
V konfiguračním souboru musíte povolit zapisovatelný chroot:
sudo nano /etc/vsftpd.conf
Poté přidejte tento řádek dole:
allow_writeable_chroot=YES
A restartujte službu:
sudo service vsftpd restart
Odpověď
Kupodivu se mi tento problém objevil při pokusu o ls
po přihlášení.
Ukázalo se, že jsem odinstaloval httpd
ve prospěch nginx
a Složka, kterou jsem používal, byla vlastněna apache:apache
a uživatel byl odebrán, když jsem odstranil httpd
. chcon
„d adresáře do nginx:nginx
a poté jsem uživatele v těchto řádcích nahradil v mém konfiguračním souboru: guest_username=nginx nopriv_user=nginx
Doufejme, že to někomu pomůže, protože chybové zprávy nebyly vůbec užitečné.
Odpověď
Chtěl bych přidat do Ndianabasi:
Když máte:
allow_writeable_chroot=NO
a máte povolený chroot, nemůže být adresář Chroot zapisovatelný uživatelem, ke kterému se pokoušíte přihlásit. To byl můj případ a přišla stejná chyba. Chown jsem to (kořenový adresář) na root: root a to mi to opravilo.
P.S. Zkontroloval jsem, že již nemůžu najít uvedenou možnost na manuálových stránkách, ale může být k dispozici ve starších verzích.
Komentáře
- Pokud odpověď je to, že musíte povolit zapisovatelný chroot, jak to pomůže každému, kdo má tento problém?
odpověď
zkontrolujte, zda je adresář a jeho nadřazené adresáře pro uživatele sftp čitelné a spustitelné.
Komentáře
- Vezměte prosím na vědomí, že toto konkrétní otázka má přijatou odpověď , což znamená, že jejich problém byl již vyřešen.
- díky, ale chtěl jsem jen dodat, jak jsem tento problém vyřešil v mém případě. nebo si myslíte, že je stále nevhodné něco přidat?
- Zmínil jsem se o existující odpovědi, protože to znělo, že tento konkrétní problém měl velmi konkrétní odpověď. Narazili jste na úplně stejné příznaky? Pokud ne, vždy byste se mohli zeptat & na svůj vlastní konkrétní problém s vaší konkrétní odpovědí.
- Ano, mělo to přesně stejné příznaky.
Odpověď
Nemohu zatím zveřejňovat komentáře, takže je to částečně v reakci na Scottův komentář a pro objasnění odpovědi Mr.Fantastic …
Narazil jsem na stejný problém a poté některé pokusy a omyly zjistily, co to ve skutečnosti znamená, a lepší řešení (IMHO) než nastavení allow_writeable_chroot = YES.
Znamená to, že vsftpd by měl umožnit situaci, kdy je uživatelský domovský adresář zapisovatelný tímto uživatelem . Místo toho jsem z bezpečnostních důvodů změnil oprávnění v kořenové složce uživatele na 555. Podle jiného vlákna to zmírňuje „ROARING BEAST ATTACK“.
V mém případě bylo původní nastavení: (777) drwxrwxrwx / home / ftpuser /
Změna adresáře uživatele na: (555) dr-xr-xr-x / home / ftpuser /
způsobila, že domovský adresář uživatele NENÍ zapisovatelný uživatelem, a proto jsem nemusel používat allow_writeable_chroot = YES. To je pro moji situaci v pořádku (a bezpečnější), protože mám přednastavenou strukturu adresářů a stejně nechci, aby uživatel vytvářel nové soubory nebo adresáře ve své kořenové složce.
Na to jsem přišel, když jsem přepnul domovský adresář do / var / ftp pomocí parametru local_root = pro vsftpd a fungovalo to bez nutnosti nastavovat allow_writeable_chroot = YES. Tato složka / var / ftp je (755), ale vlastněna rootem, a proto na ni nelze zapisovat ftpuser.