FTP连接被拒绝错误解决问题
如果在Linux下使用FTP客户端时出现错误(ftp连接被拒绝),例如连接被拒绝,则可以使用以下方法解决此问题。
确保已安装ftp服务器
确保已安装ftp服务器并且服务正在运行。
在Debian Linux下,您可以使用dpkg命令来验证是否已安装ftp服务器:
$ dpkg -l | grep -i "ftp"
输出:
ii ftpd 0.17-21 FTP server
或运行以下命令:
$ dpkg -l | grep -i ftp
在Red Hat/Novell Suse/Fedora Linux下,尝试rpm命令:
# rpm -qa | grep -i "*ftp*"
无论如何,如果您安装了ftp软件包,它将返回输出。
如果未安装ftp软件包,它将通知您或根本不提供任何输出。
自然,下一个逻辑步骤是安装FTP服务器。
在Red Hat/Fedora Linux下,按如下所示安装vsftpd服务器:
# up2date vsftpd
或者,如果您使用的是Fedora Linux,请使用yum:
# yum install vsftpd
如果您使用的是Debian Linux,请使用apt-get命令:
# apt-get install vsftpd
接下来,通过修改/etc/vsftpd.conf文件来配置vsftpd。
ftp服务器是否正在运行(端口21是否打开)?
使用ssh登录到ftp服务器并尝试telnet端口21(以查看端口是否打开):
$ telnet localhost 21
接下来运行netstat -tulpn命令以查看端口21是否处于打开状态:
$ netstat -tulpn | grep :21
输出:
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
或者尝试以下命令:
$ netstat -a | grep ftp
输出:
tcp 0 0 *:ftp *:* LISTEN
如果端口未打开,请启动ftp服务器/service。
在RedHat/Fedora Linux下使用service命令:
# service vsftpd start
在Debian Linux下,使用以下命令:
# /etc/init.d/vsftpd start
FTP用户权限
是特定用户不允许使用您的vsftpd ftp服务器,然后确保该用户具有使用ftp服务器的权限。
文件/etc/ftpusers禁止使用vsftpd服务器访问的用户列表。
确保用户名不在此文件中。
安全性或防火墙
确保iptables Firewall/tcpd不会阻止对ftp服务器的访问。
在ftp服务器上运行以下命令(通过ssh登录):
# iptables -L -n
输出:
Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:6881:6882 ACCEPT udp -- 192.54.1.254 0.0.0.0/0 udp dpt:514 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:80 state NEW,RELATED,ESTABLISHED LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 DROP all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
上面的输出不允许端口21(端口21被防火墙阻止)。
解决方法:您需要使用iptables规则打开端口21。
确保文件/etc/hosts.deny(TCPD包装器)不会阻止ftp主机访问端口21。