2つの新しいCentOS 7システムを同時に設定したので、設定は同じでなければならず、IPアドレスとホスト名のみが異なります。
VSFTPDをインストールし、パッシブポートとして設定しました。 1つのボックスは問題なくうまく接続されていますが、2番目のボックスでは引き続き次のエラーが発生します。
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を無効にしたので、問題がSELinuxではないことを知っています。ファイアウォールデーモンを無効にしようとしたため、問題はファイアウォールにもありません。
以下は、/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個のエラーコードが表示されませんでした。
アイデア?
答え1
CENTOS 7でPASSコマンドを実行した後も同じエラーが発生しました。 (GnuTLSエラー-15:予期しないTLSパケットが受信されました。)
私の解決策は次のとおりです。
vsftpd.confに以下を追加する必要がありました:
allow_writeable_chroot=YES
chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER
答え2
この問題を解決するのに苦労している私に役立つことを願ってこの回答を投稿します。
ファイルに正しく設定されていません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
。
答え3
同じエラー(エラー:GnuTLSエラー-15:予期しないTLSパケットが受信されました)が発生し、約1時間頭をぶつけましたが、Glusterボリュームのftpユーザーのホームディレクトリがマウントされていないことがわかりました。 Gluster ボリュームをマウントし、問題を解決します。
答え4
ls
奇妙なことは、ログイン後に試してみると、この問題が発生することです。
httpd
私が削除し、nginx
作業していたフォルダはすでに所有されており、削除したapache:apache
ときにユーザーも削除されたことがわかりましたhttpd
。構成ファイルchcon
にディレクトリを追加したら、次の行nginx:nginx
でユーザーを置き換えました。
guest_username=nginx nopriv_user=nginx
エラーメッセージはまったく役に立ちませんので、これが誰かに役立つことを願っています。