Total Pageviews

Wednesday, 16 December 2015

vsftpd的设置

最近一次配置ftp的时候,却发现有问题,报错如下
命令: USER jack
响应: 331 Please specify the password.
命令: PASS *******
响应: 530 Login incorrect.
错误: 严重错误
错误: 无法连接到服务器
或者
命令: TYPE I
响应: 200 Switching to Binary mode.
命令: PASV
错误: 连接超时
错误: 读取目录列表失败

解决办法

问题一的解决方法是从另外机器将/etc/pam.d/vsftpd 复制一份过来。因为我之前看文档的时候说到这个问题,所以当时可能将这个文件给替换过了。
问题二 将客户端的连接模式改为主动模式即可。

原因分析

命令: PASV 表示被动方式。 将客户端连接改成port 主动方式即可。
关于PORT,PASV
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
概括:
--------------------------------------------------------------------------------
主动模式:服务器向客户端敲门,然后客户端开门
被动模式:客户端向服务器敲门,然后服务器开门
所以,如果服务器是通过代理方式的话,可能会有问题。这个问题以前碰到过,当时是信息化的机器只有内网IP,然后他映射了一个外网端口。他提供了ftp服务,但是我去连ftp的时候,没法显示目录,就和我的问题2是一样的。
port pasv 更多信息可点击查看
可参考ubuntu的vsftpd wiki 点击查看
总结下,ubuntu或者debian下vsftpd的简易配置
1、
apt-get install -y vsftpd
2、
将下面内容写入配置文件
vim /etc/vsftpd.conf
anonymous_enable=no
connect_from_port_20=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=no
tcp_wrappers=YES
userlist_enable=NO
3、
添加账号adduser ftpuser
修改密码
4、修改/etc/passwd 将ftpuser的目录更改
5、给相应目录权限
update 20141112
今天部署vsftp的时候还是碰到问题了,最终通过以下方式解决
553 Could not create file.
账号没有权限创建文件
530 Login incorrect.
登陆失败
500 OOPS: cannot change directory:/data/replays
如果是553的问题,按照以下步骤解决:
vsFTPd的553 Could not create file错误
匿名用户
1.vsftpd.conf文件中:
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
2.ftp目录权限:
查看ftp目录:
> cat /etc/passwd | grep ftp
ftp:x:107:65534::/home/ftp:/bin/false
ftp目录为/home/ftp
chown root:root /home/ftp
chmod -R 777 /home/ftp
但这样是不能上传文件的。因为这是匿名用户,当前目录所有者是root用户; 真的要上传文件在该目录下建立一个文件夹如名字是upload,
mkdir /home/ftp/upload
chown ftp:root /home/ftp/upload