두 개의 새 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가 아니라는 것을 알고 있습니다. 방화벽 데몬 (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
Google 검색을했지만 15 개의 오류 코드가 표시되지 않았습니다.
생각하십니까?
답변
CENTOS 7에서 PASS 명령을 실행 한 후에도 동일한 오류가 발생했습니다. (GnuTLS 오류 -15 : 예기치 않은 TLS 패킷이 수신되었습니다.)
해결 방법은 다음과 같습니다.
vsftpd.conf에 다음을 추가해야했습니다.
allow_writeable_chroot=YES chroot_local_user=YES local_root=/ftphome/$USER user_sub_token=$USER
댓글
- 감사합니다, 내 파일 /etc/vsftpd.conf에 대해 다음을 추가합니다. user_sub_token = $ USER 및 이제 GNUTLS 오류가 없습니다. -15 바로 지금 다른 오류가 발생합니다. 데이터 연결을 설정할 수 없습니다. ECONNREFUSED-서버에서 연결이 거부되었습니다.
- 내 파일 /etc/vsftpd.conf에서 해결했습니다. ” listen_address = 192.168.1.2 ” & ” pasv_address = 192.168.1.2 ” 마지막에 추가하고 필요한 작업입니다 .D
- 제 경우에는 누락 된 디렉토리를 가리키는 local_root가 있습니다. 해당 변수를 수정했을 때 오류 15가 사라졌습니다.
Answer
이 문제를 해결하는 데 어려움을 겪었 기 때문에 미래에 누군가에게 도움이 될 수 있기를 바라며이 답변을 게시하고 있습니다.
local_root
가 없습니다. /etc/vsftpd/vsftpd.conf
파일이 올바르게 설정되었습니다. 설정은 존재하지 않는 폴더를 가리 켰습니다.
저는 FileZilla에서 암호 명령이 실패한 것을 보았 기 때문에 암호가 마음에 들지 않는다고 생각했습니다. 올바른 방향으로 생각하게 만든 것은 왜 자세한 로그를받지 못하는지 조사하는 데 시간을 할애했기 때문입니다. 나는 로그를받지 못했습니다. FTP 프로토콜을 확인한 디버그 로그를 수신하기 시작하자 FTP 서버가 암호에 OK라고 말하는 것을 보았습니다. 안타깝게도 어떤 종류의 로깅도 없었지만 로컬 루트를 협상하는 것이 암호를 인증 한 후 다음 조치가 될 것이라는 생각이 들었습니다. 내가 옳았 고 그로 인해 문제가 발생했습니다.
다음은 로컬 루트를 포함하는 /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
가 필요합니다.
댓글
- 맞춤법 오류로 인해 동일한 함정에 부딪 혔습니다. 유효한 local_root 디렉토리를 설정하면 문제가 해결되었습니다.
답변
정확히 동일한 오류가 발생했습니다 (오류 : GnuTLS 오류 -15 : 예상치 못한 TLS 패킷이 수신되었습니다.) 한 시간 정도 머리를 두 드렸지만 Gluster 볼륨에있는 ftp 사용자 홈 디렉토리가 마운트되지 않았 음을 알아 냈습니다. 마운트 된 Gluster 볼륨 및 문제가 해결되었습니다.
답변
구성 파일에서 쓰기 가능한 chroot를 허용해야합니다.
sudo nano /etc/vsftpd.conf
그런 다음 하단에 다음 줄을 추가합니다.
allow_writeable_chroot=YES
그리고 서비스를 다시 시작합니다.
sudo service vsftpd restart
답변
이상하게도 ls
로그인 후.
nginx
를 선호하여 httpd
를 제거한 것으로 나타났습니다. 내가 사용하던 폴더는 apache:apache
소유 였고 사용자는 httpd
를 제거했을 때 제거되었습니다. chcon
“디렉토리를 nginx:nginx
로 설정 한 다음 구성 파일의 다음 줄에서 사용자를 대체했습니다. guest_username=nginx nopriv_user=nginx
오류 메시지가 전혀 도움이되지 않았기 때문에 이것이 도움이되기를 바랍니다.
답변
Ndianabasi에 추가하고 싶습니다.
다음이있는 경우 :
allow_writeable_chroot=NO
chroot를 사용하도록 설정 한 경우 로그인하려는 사용자가 Chroot 디렉토리에 “쓸 수 없습니다.” 이것은 내 경우 였고 동일한 오류가 발생했습니다. 나는 그것을 (root dir) root : root로 차 우고 그것을 고쳤습니다.
P.S. “맨 페이지에서 언급 된 옵션을 더 이상 찾을 수 없지만 이전 버전에서 사용할 수 있습니다.
댓글
- 답변 쓰기 가능한 chroot를 허용해야한다는 것입니다. this 가이 문제가있는 사람에게 어떻게 도움이됩니까?
Answer
sftp 사용자가 디렉토리와 상위 디렉토리를 읽고 실행할 수 있는지 확인하십시오.
댓글
- 이 점에 유의하십시오. 특정 질문에 수락 된 답변 이 있습니다. 이는 문제가 이미 해결되었음을 의미합니다.
- 감사합니다.하지만이 문제를 어떻게 해결했는지 추가하고 싶었습니다. 제 경우에. 아니면 여전히 뭔가를 추가하는 것이 부적절하다고 생각하십니까?
- 이 특정 문제에 매우 구체적인 답변이있는 것처럼 들리기 때문에 기존 답변을 언급했습니다. 똑같은 증상을 보셨나요? 그렇지 않습니다. 언제든지 &에게 자신의 특정 문제에 답하도록 요청할 수 있습니다. 특정 답변으로.
- 예, 정확히 동일한 기호를 가졌습니다.
답변
아직 코멘트를 게시 할 수 없습니다. 그래서 이것은 부분적으로 Scott의 코멘트에 대한 응답이고 Mr.Fantastic의 대답을 명확히하기위한 것입니다 …
같은 문제가 발생했습니다 시행 착오를 거쳐 이것이 실제로 의미하는 바가 무엇인지, 그리고 allow_writeable_chroot = YES를 설정하는 것보다 더 나은 솔루션 (IMHO)을 알아 냈습니다.
vsftpd가 해당 사용자가 사용자의 홈 디렉토리를 쓸 수있는 상황을 허용해야 함을 의미합니다. . 대신 보안상의 이유로 사용자의 루트 폴더에 대한 권한을 555로 변경했습니다. 다른 스레드에 따르면 이것은 “ROARING BEAST ATTACK”을 완화합니다.
제 경우 원래 설정은 다음과 같습니다. (777) drwxrwxrwx / home / ftpuser /
사용자의 디렉토리를 다음으로 변경 : (555) dr-xr-xr-x / home / ftpuser /
사용자의 홈 디렉토리를 만들지 않았습니다. 사용자가 쓸 수 있으므로 allow_writeable_chroot = YES를 사용할 필요가 없습니다. 사전 설정된 디렉토리 구조가 있고 “어쨌든 사용자가 루트 폴더에 새 파일이나 디렉토리를 만드는 것을 원하지 않기 때문에 이것은 내 상황에 대해 괜찮습니다 (더 안전합니다).
전환했을 때 이것을 알아 냈습니다. vsftpd의 local_root = 매개 변수를 통해 홈 디렉토리를 / var / ftp로 설정하고 allow_writeable_chroot = YES를 설정하지 않고도 작동했습니다.이 폴더 / var / ftp는 (755)이지만 루트가 소유하므로 ftpuser가 쓸 수 없습니다.