背景

背景

背景

我不是 Linux 用户,甚至不是命令行用户,但我负责为公司内部网设置 Linux 服务器。

我在 Windows 10 上的 HyperV 中设置了 CentOS 7 安装。然后我在里面设置了 AMP 堆栈,并通过 Win10 进入 CentOS 的网络访问互联网。我让 CentOS Web 服务器拥有自己的 IP 地址,并且可以从外部网络访问。

我现在正在尝试让 FTP 工作,这样当我将 VM 移动到其最终的真实服务器(不在我的桌面上)时,我可以通过 FTP 将文件移动到它。我已经按照以 为中心的大量教程进行操作vsftp。我已经安装了它,我已经添加了 FTP 访问权限firewall-cmd。我弄乱了iptables,然后发现 CentOS 显然使用firewalld,而不是iptables

设置

/etc/vsftp/vsftp.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_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist

内容/etc/vsftpd.userlist

tester

状态vsftpd

在此处输入图片描述

问题

当我尝试通过 FTP 连接时,我看到:

在此处输入图片描述

问题

我究竟做错了什么?

答案1

鉴于您的 FTP 客户端显示“连接被拒绝”,我相信您的防火墙配置正确,但 vsftpd 根本没有监听您尝试连接的地址 ( 192.168.15.101)。当服务未在目标服务器上运行或未监听您尝试连接的地址时,就会出现该消息。正如我在这两种情况下的测试服务器所见:

[root@host ~]# telnet 192.168.122.173 21
Trying 192.168.122.173...
telnet: connect to address 192.168.122.173: Connection refused

如果是防火墙问题,则错误消息将是“没有到主机的路由”:

[root@host ~]# telnet 192.168.122.173 21
Trying 192.168.122.173...
telnet: connect to address 192.168.122.173: No route to host

有几件事我想确认一下:

  • vsftpd 是否正在监听该地址?如果您看到以下内容,那么它应该正在监听所有可用的 IPv4 和 IPv6 地址 - 如果您看到其他内容,那么这可能是您的问题:

    [root@ftpsrv ~]# ss -pln|grep -i ftp
    tcp    LISTEN     0      32       -->:::21<--                   :::*                   users:(("vsftpd",pid=1636,fd=3))
    
  • 您连接的地址和 vsftpd 所在的服务器是同一个吗? ip ad会告诉你 - 再三检查永远不会有坏处。您还可以尝试从运行 vsftpd 的服务器远程登录到它,以确保它在本地正常工作。

正如@Sven 提到的,SFTP 是另一个选项,尽管它不使用 vsftpd,而是使用 OpenSSH 服务器。它实际上在许多系统中默认启用 - 只需检查您的/etc/ssh/sshd_config文件中是否存在类似以下内容:

Subsystem       sftp    /usr/libexec/openssh/sftp-server

man 8 sftp-server可以为您提供更多相关信息。

相关内容