私は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
エラーは、常にパスワードチェックの直後です。
私は問題を知っていますIS無効にしたので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個のエラーコードは表示されませんでした。
考え?
私はこの問題を解決するのに苦労して、将来の誰か、おそらく私を助けるかもしれないと期待してこの回答を投稿しています。
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
私見、xferlog_enableは実際のファイルのアップロードとダウンロードよりも多いので、コメントをバグと見なします。このプロパティはロギングもオンにします。 Googleの調査によると、log_ftp_protocol=YES
にはxferlog_enable=YES
が必要です。
CENTOS 7のPASSコマンドの後に同じエラーが発生しました(GnuTLSエラー-15:予期しないTLSパケットが受信されました)。
私の解決策は次のとおりです:
Vsftpd.confに以下を追加する必要がありました:
allow_writeable_chroot=YES
chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER
私はまったく同じエラー(エラー:GnuTLSエラー-15:予期しないTLSパケットを受信しました)に直面し、1時間ほど頭を叩いたが、Glusterボリュームにあるftpユーザーのホームディレクトリがマウントされていないことがわかりました。 Glusterボリュームをマウントし、問題は解決しました。
私はまだコメントを投稿できませんので、これはスコットのコメントへの応答であり、ファンタスティック氏の回答を明確にするためです...
私はこれと同じ問題に遭遇し、いくつかの試行錯誤の結果、これが実際に何を意味するのか、およびallow_writeable_chroot = YESを設定するよりも良い解決策(IMHO)を理解しました。
つまり、vsftpdは、ユーザーのホームディレクトリがそのユーザーによって書き込み可能である状況を許可する必要があります。代わりに、セキュリティ上の理由から、ユーザーのルートフォルダーのアクセス許可を555に変更しました。別のスレッドによると、これにより「ローリングビースト攻撃」が緩和されます。
私の場合、元のセットアップは(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)ですが、rootが所有しているため、ftpuserは書き込みできません。
ディレクトリーとその親ディレクトリーがsftpユーザーに対して読み取り可能および実行可能であるかどうかを確認してください。
奇妙なことに、ログイン後にls
を試行すると、この問題が発生しました。
httpd
を優先してnginx
をアンインストールし、使用していたフォルダはApache:apache
が所有していたため、httpd
を削除するとユーザーが削除されたことがわかりました。ディレクトリをnginx:nginx
にchcon
'dし、設定ファイルの次の行でユーザーを置き換えました:guest_username=nginx nopriv_user=nginx
エラーメッセージがまったく役に立たなかったので、うまくいけば、これが誰かを助けるでしょう。
Ndianabasiに追加したいと思います。
あなたが持っているとき:
allow_writeable_chroot=NO
chrootが有効になっている場合、ログインしようとしているユーザーはChrootディレクトリに書き込みできません。これは私のケースであり、同じエラーが発生しました。私はそれ(ルートディレクトリ)をroot:rootに変更しましたが、それで修正されました。
追伸チェックしたところ、manページで上記のオプションが見つからないことを確認しましたが、古いバージョンで使用できる場合があります。
設定ファイルで書き込み可能なchrootを許可する必要があります:
Sudo nano /etc/vsftpd.conf
次に、この行を下部に追加します。
allow_writeable_chroot=YES
そして、サービスを再起動します。
Sudo service vsftpd restart