【问题标题】:What is producing the vsftpd server error when configuring an SSL certificate?配置 SSL 证书时产生 vsftpd 服务器错误的原因是什么?
【发布时间】:2026-01-04 11:35:02
【问题描述】:

我的目标是在 Ubuntu 20.04 上创建一个外部 ftp 服务器。

我的问题: 当我配置 SSL 证书时,出现 (code=exited, Staus=2/INVALID ARGUMENT) 错误。错误日志并不准确,我至少想知道如何获得关于产生错误的代码的非常详细的报告。

当我运行命令时,我的终端显示以下内容:

sudo systemctl restart vsftpd.service
sudo systemctl tatus vsftpd. status

结果:

vsftpd.service - vsftpd FTP server
 Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
 Active: failed (Result: exit-code) since Sat 2020-10-10 20:12:07 AST; 12s ago
Process: 36977 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Process: 36987 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)

当我使用以下方法浏览日志时:

journal ctl -xn

启动作业已成功执行。但是它会在显示消息后立即关闭:

The job identifier is 13036.
Oct 10 20:15:13 username-Aspire-A315-51 sudo[37104]: pam_unix(sudo:session): session closed
Oct 10 20:15:13 username-Aspire-A315-51 systemd[1]: vsftpd.service: 
Main process exited, code=exited, status=2/INVALIDARGUMENT
Subject: Unit process exited

我的 vsfptd.conf 是如何设置的?

pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1_1=YES
ssl_tlsv1_2=NO
ssl_sslv3=NO
require_ssl_reuse=YES
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

服务器在配置 SSL_enable = NO 且默认 rsa_cert 和 rsa_key_files 如下:

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

如果对 SSL 证书和密钥的生成方式有任何疑问。这演示了使用的教程中的代码:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt

我已经多次创建和重新创建 SSL 证书。我还注释掉了 IPv6_enable=YES。

我看到了一些关于注释掉以下代码的建议:

/etc/pam.d/vsftpd

这没有成效。

我愿意接受一些进一步的建议,也许会有所帮助。已经过去了几个小时,而且由于缺乏日志详细信息,因此很难对解决方案做出准确的猜测。

【问题讨论】:

    标签: ssl-certificate pam vsftpd


    【解决方案1】:

    我已经通过 sudo chown root:root /etc/vsftpd.conf 将 /etc/vsftpd.conf 的权限重置为 root:root,现在 vsftpd 服务器通过 sudo systemctl restart vsftpd.service 启动并手动运行它通过 sudo /usr/bin/vsftpd。

    【讨论】: