我刚刚在 Ubuntu 系统上安装了 VSFTPD,但它似乎无法正常工作。
在配置文件中,我只将“local_enable”、“write_enable”和“listen”更改为“YES”。
当我使用“netstat -tanp”或类似命令时,它们只显示“22:sshd”,但端口 21 上没有任何内容。
我尝试重新启动 VSFTPD,并尝试重新启动整个 VPS。重新安装 VSFTPD 也没有帮助。
奇怪的是:在我第一次重新启动我的 VPS 之前,它正在监听 IPv6 Port21,但现在它甚至不再监听了。
我尝试了谷歌告诉我的一切,但没有任何效果。这是全新安装的ubuntu 16.04.4,vsftpd是版本3.0.3
(当我尝试在控制台中输入“vsftpd”时,它告诉我“500 OOPS:毁坏了 IPv4 和 IPv6 的 vsftpd 的两个副本)
TL;DR:VSFTPD 没有监听 Port21,有什么提示吗?
答案1
我刚刚解决了类似的问题。为了让它在 IPv4 上工作,我对 /etc/vsftpd.conf 进行了这些更改
listen=yes
listen_ipv6=NO
listen_address=<Public ipv4 address>
答案2
99% 的情况下,vsftpd.conf
文件中存在配置问题...检查 vsftpd 的状态...可能会出现如下错误:
root@localhost:~# sudo systemctl status vsftpd
vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2021-03-13 02:40:20 UTC; 32s ago
Process: 538 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/S
Process: 539 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)
Main PID: 539 (code=exited, status=2)
Mar 13 02:40:20 localhost systemd[1]: Starting vsftpd FTP server...
Mar 13 02:40:20 localhost systemd[1]: Started vsftpd FTP server.
Mar 13 02:40:20 localhost systemd[1]: vsftpd.service: Main process exited, code=exited,
Mar 13 02:40:20 localhost systemd[1]: vsftpd.service: Failed with result 'exit-code'.
答案3
这是因为 vsftpd 只能侦听 IPv4 或 IPv6。默认情况下,vsftpd 绑定到 IPv6 套接字。但是,同样默认情况下,内核会自动打开并绑定等效的 IPv4 端口(参考)
# This directive enables listening on IPv6 sockets. By default, listening # on the IPv6 "any" address (::) will accept connections from both IPv6 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6 # sockets. If you want that (perhaps because you want to listen on specific # addresses) then you must run two copies of vsftpd with two configuration # files. listen_ipv6=YES