我正在尝试在我的 Ubuntu 16.04 服务器上安装 FTP 服务器 (vsftpd)尺度道。
我做了以下事情:
sudo apt-get update
sudo apt-get install vsftpd
sudo service vsftpd status
我收到以下结果:
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2018-08-31 22:26:53 CEST; 10min ago
Process: 10161 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)
Process: 10157 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 10161 (code=exited, status=2)
Aug 31 22:26:53 scw-24e1a0 systemd[1]: Starting vsftpd FTP server...
Aug 31 22:26:53 scw-24e1a0 systemd[1]: Started vsftpd FTP server.
Aug 31 22:26:53 scw-24e1a0 systemd[1]: vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 31 22:26:53 scw-24e1a0 systemd[1]: vsftpd.service: Unit entered failed state.
Aug 31 22:26:53 scw-24e1a0 systemd[1]: vsftpd.service: Failed with result 'exit-code'.
这可能是什么问题?
答案1
如果您没有碰过/etc/vsftpd.conf
,则此失败状态的原因应该是另一个服务已在默认 FTP 端口上侦听 - 21
。我做了一个实验,我得到了与您相同的状态。您可以使用以下命令之一调查哪个是另一个服务:
sudo lsof -i -n -P | grep ':21'
sudo netstat -peanut | grep ':21'
尝试sudo systemctl stop <that another>.service
和sudo systemctl start vsftpd.service
,然后再次检查状态:sudo systemctl status vsftpd.service
。
解决此问题的另一种方法是更改其中一个服务侦听的端口。例如,您可以vsftpd
通过将以下指令添加到/etc/vsftpd.conf
-参考:
listen_port=2121
然后,您应该指示 FTP 客户端通过端口2121
而不是默认端口进行连接。在大多数情况下,您只需要:<port-number>
在目标 ip 地址/FQDN 末尾添加。例如,如果您使用 Nautilus 作为 FTP 客户端:
补充笔记:
我不知道vsftp
实际安全性如何,但如果您没有特别需要使用此服务,您可以使用sftp
它通过加密的 SSH 连接并使用其基于密钥的身份验证(如果之前已配置)。此外,您不需要在防火墙上打开任何其他端口。
当然,如果你有 SSH 访问权限,sftp
并且你没有禁用它,那么它已经可用了!以下是与此相关的一些参考资料:
- Ubuntu 的 Filezilla 或 WinSCP 替代品
- 本答案的第二部分是如何设置基于 SSH 密钥的身份验证
- 可以建立 SSH 连接,但通过终端或任何客户端的 sftp 连接被拒绝
- 该命令
scp
也rsync
可用于通过 SSH 传输文件。
答案2
如果你的输出显示的状态是code=exited, status=2/INVALIDARGUMENT
,那说明你的/etc/vsftpd.conf
输出不正确。
编辑您的/etc/vsftpd.conf
并添加队列:
从listen=YES
到listen=NO
然后重新启动您的服务。
这对我有用。