FTP服务搭建(linux)(转载)

一、下载(在线安装可跳过)
1、下载(见网盘)
下载服务端 vsftpd:下载地址

下载客户端 ftp

注:如果需要使用ftp命令,则客户端必须安装,否则无法使用(-bash: ftp: command not found)

二、安装
1、检查是否已经安装了vsftp
首先查看系统中是否成功安装了vsftpd,执行下面命令(有内容则安装了ftp)

rpm -qa | grep vsftpd
1
2、开始安装
在线安装
yum install vsftpd -y
1
若linux处于离线状态则无法使用yum命令安装
离线下载vsftp:
http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd(x86-64)

上传安装包到服务器,放在安装目录,比如/home/ 下

离线安装
rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm

安装过程可能会报错,缺少依赖:

解决:安装相关依赖(centos7 的最新依赖包在博客资源里,可自行去下载)
rpm -ivh libcap-2.16-5.5.el6.x86_64.rpm
rpm -ivh libcap-devel-2.16-5.5.el6.x86_64.rpm

检查是否安装成功

rpm -qa | grep vsftpd
1
服务启动

systemctl start vsftpd.service
1
三、配置
1、进入cd /etc/vsftpd目录
cd /etc/vsftpd
1
2、编辑vsftpd.conf文件
养成备份的好习惯

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.backup.conf

vim vsftpd.conf

修改如下:

#禁止匿名登录FTP服务器
anonymous_enable=NO
#允许本地用户登录FTP服务器
local_enable=YES
#本地用户上传文件的umask
local_umask=022
#设置本地用户登录后所在目录
local_root=/home/vsftpd/ftpuser
#全部用户是否被限制在主目录
#如果设置成YES会导致你用java代码创建文件夹时失败,因为他被限制在了宿主目录
#chroot_local_user=YES
#开启被动模式
pasv_enable=YES
pasv_addr_resolve=YES
#FTP服务器公网IP(也就是当前阿里云服务器的公网 IP)
pasv_address=120.xx.xx.xx
#设置被动模式下,建立数据传输可使用port范围的最小值
pasv_min_port=10000
#设置被动模式下,建立数据传输可使用port范围的最大值
pasv_max_port=10088


#是否在进入新目录时显示 message_file 文件中的内容
dirmessage_enable=YES
#启用日志
xferlog_enable=YES
#日志是否进行格式化
xferlog_std_format=YES
#独立服务
listen=YES
#centos7增加此设置,开启后默认监控ipv4和ipv6
listen_ipv6=NO
#认证模式
pam_service_name=vsftpd
#启用用户列表
userlist_enable=YES
#可以上传(全局控制)
write_enable=YES
#允许下载
download_enable=YES

3、创建ftp用户
这里主要需要创建的用户无法使用普通登录功能或者telnet,只允许使用ftp登录

useradd -s /sbin/nologin -d /home/vsftpd/ftpuser ftpuser
1
4、为用户设置密码
passwd ftpuser
1
5、将该用户加入到用户列表中(可选)
vi /etc/vsftpd/user_list
1
6、防火墙设置
# 方法一:关闭防火墙
systemctl stop firewalld

# 方法二:开放端口
# 提示:防火墙iptables是centos7之前的服务,centos7开始是firewalld服务,开放端口流程请自行百度。另外注意云服务器需要在云平台上设置安全组开放端口
开启
# iptables -I INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
# iptables -I OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
保存
# /etc/rc.d/init.d/iptables save
重启防火墙
# service iptables restart

7、修改selinux,将SELINUX改为disabled
SELINUX=disabled
1
8、设置自启
chkconfig vsftpd on
1
9、服务重启
systemctl restart vsftpd.service

其他命令

#开启
service vsftpd start
#停止
service vsftpd stop
#重启
service vsftpd restart

四、测试
安装ftp客户端后,可以进行测试。230代表连接成功

#连接ftp服务
[root@fan102 ~]# ftp 172.16.1.102 21
Connected to 172.16.1.102 (172.16.1.102).
220 (vsFTPd 3.0.2)
Name (172.16.1.102:root): zion
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

windows使用FileZilla可以测试ftp是否可以登录

linux或mac使用命令

sftp 用户名@地址登录
1
​ 注:如果登录出现提示331 Please specify the password,执行下面命令即可:

echo "/sbin/nologin" >> /etc/shells
1
设置ftp用户只能在自己目录中,这里有两种方式

第一种:

chroot_local_user=YES #设置是否锁定本地用户在自己的主目录中,将所有用户限定在主目录内(登录后无法cd到父目录或同级目录中)
chroot_list_enable=YES #设置是否将用户锁定在自己的主目录中 ,YES表示要启用chroot_list_file
chroot_list_file=/etc/vsftpd/chroot_list #定义哪些用户将会锁定在自己的主目录中,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。

第二种:

chroot_local_user=NO #NO则所有用户不被限定在主目录内
chroot_list_enable=YES #YES表示要启用chroot_list_file
chroot_list_file=/etc/vsftpd/chroot_list #因为chroot_local_user=NO,这时列出的是那些“会被限制在主目录下”的用户。

五、登录失败
1.错误代码:530
530 Login incorrect

#查看日志
tail /var/log/secure

日志内容:pam_unix(vsftpd:auth): authenticatio,pam_unix(vsftpd:auth): check pass pam_unix(vsftpd:auth): authentication failure,logname= uid=0

原因

这个是因为你创建的用户是不需要登陆的你设置了nologin,然后登陆的时候会去/etc/passwd下面检查这个用户,必须为/etc/shells类型才能登陆。

解决

#第四行 设置为nologin,或者注释掉

#修改配置文件
[root@fan102 ~]# vi /etc/pam.d/vsftpd
#第四行 设置为nologin,或者注释掉
1 #%PAM-1.0
2 session optional pam_keyinit.so force revoke
3 auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
4 auth required pam_nologin.so
5 auth include password-auth
6 account include password-auth
7 session required pam_loginuid.so
8 session include password-auth

2.错误代码:500
500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

原因:用户没有变更根目录的权限,ftp用户默认的根目录是/home/vsftpd/ftpuser,如果要切换登陆目录,需要给予权限

解决

第一步:

#修改配置文件
vi /etc/vsftpd/vsftpd.conf

#内容如下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

**第二步:**在/etc/vsftpd/vsftpd创建chroot_list并将用户(ftpuser)加入该文件

#创建chroot_list并将用户加入该文件
[root@fan102 ~]# /etc/vsftpd/vsftpd/chroot_list
#文件内容
ftpuser

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_38856939/article/details/114582215

posted @ 2024-02-26 15:45  全琪俊  阅读(36)  评论(0编辑  收藏  举报