Ssl
vsftpd 無法啟動(狀態=2)
問題是
vsftpd
從另一台伺服器傳輸工作配置後服務無法啟動。的
vsftpd
配置文件中,只有這些被修改:
/etc/vsftpd.chroot_list
添加本地使用者名。/etc/vsftpd/vsftpd.conf
配置如下,(*) 表示對分發預設值的更改或添加:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES ftpd_banner=Hello. listen=YES (*) listen_ipv6=NO (*) pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list dual_log_enable=YES use_localtime=YES (*) rsa_cert_file=/path/to/vsftpd.crt (*) rsa_private_key_file=/path/to/vsftpd.key (*) ssl_enable=YES (*) allow_anon_ssl=NO (*) force_local_data_ssl=NO (*) force_local_logins_ssl=NO (*) ssl_tlsv1=YES (*) ssl_sslv2=NO (*) ssl_sslv3=NO (*) require_ssl_reuse=NO (*) ssl_ciphers=HIGH (*) ssl_tlsv1_1=YES (*) ssl_tlsv1_2=YES (*) allow_writeable_chroot=YES (*)
需要強調的是,配置是從工作
vsftpd
實例移植的。工作的 vsftpd-2.2.2-24.el6.x86_64 實例位於 RHEL 6 (CentOS 6) 上,新的 vsftpd-3.0.2-22.el7.x86_64 實例位於 RHEL 7 (CentOS 7) 上。事實上,一個非常相似的配置很容易在另一台伺服器上啟動。VSFTP 無法啟動 CentOS 7無濟於事。不需要
listen_ipv6=YES
設置,因為只需要其中一個listen_ipv6
或listen
設置為“是”,另一個設置為“否”。此外,雖然allow_writeable_chroot=YES
在原始工作配置中不存在,但不需要簡單地啟動vsftpd
(儘管必須解決與將配置從 RHEL 6 遷移到 RHEL 7 相關的不同問題)。$ sudo systemctl status vsftpd * vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: inactive (dead) $ sudo systemctl enable vsftpd Created symlink from /etc/systemd/system/multi-user.target.wants/ vsftpd.service to /usr/lib/systemd/system/vsftpd.service. $ sudo systemctl start vsftpd Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details. $ sudo systemctl -l status vsftpd * vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Tue 2018-07-31 22:07:56 CDT; 6min ago Process: 10131 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=2) Jul 31 22:07:56 host.example.com systemd[1]: Starting Vsftpd ftp daemon... Jul 31 22:07:56 host.domain.tld systemd[1]: vsftpd.service: control process exited, code=exited status=2 Jul 31 22:07:56 host.domain.tld systemd[1]: Failed to start Vsftpd ftp daemon. Jul 31 22:07:56 host.domain.tld systemd[1]: Unit vsftpd.service entered failed state. Jul 31 22:07:56 host.domain.tld systemd[1]: vsftpd.service failed. $ sudo journalct -xe Jul 31 22:23:33 host.domain.tld sudo[11537]: user : TTY=pts/0 ; PWD=/etc/vsftpd ; USER=root ; COMMAND=/bin/systemctl start vsftpd Jul 31 22:23:33 host.domain.tld polkitd[697]: Registered Authentication Agent for unix-process:11538:187361910 (system bus name :1.13901 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, loc Jul 31 22:23:33 host.domain.tld systemd[1]: Starting Vsftpd ftp daemon... -- Subject: Unit vsftpd.service has begun start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit vsftpd.service has begun starting up. Jul 31 22:23:33 host.domain.tld systemd[1]: vsftpd.service: control process exited, code=exited status=2 Jul 31 22:23:33 host.domain.tld systemd[1]: Failed to start Vsftpd ftp daemon. -- Subject: Unit vsftpd.service has failed -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit vsftpd.service has failed. -- -- The result is failed. Jul 31 22:23:33 host.domain.tld systemd[1]: Unit vsftpd.service entered failed state. Jul 31 22:23:33 host.domain.tld systemd[1]: vsftpd.service failed.
在這種情況下,幸運的是另一台伺服器已成功啟動,工作配置非常相似,因此可以通過查找差異來進行概念上的故障排除。
解決方案:絕對確保配置引用的任何文件確實存在(或伺服器可以訪問)。例如:
rsa_cert_file=/path/to/vsftpd.crt rsa_private_key_file=/path/to/vsftpd.key
在工作安裝中,作為建立 Web 伺服器的一部分,密鑰已被傳輸到系統,但在此系統上,密鑰
vsftpd
位於尚未同步的位置。填充 .crt 和 .key 文件可解決此錯誤。