Linux上安装配置FTP、以及常见问题解决

一、概述

  • FTP服务器为vsftpd,客户端为ftp。

  • 默认FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。如果服务器有防火墙,则建议设置为被动模式,额外开放指定数据端口。

版本信息

[root@VM-4-11-centos ~]# uname -r
3.10.0-1160.11.1.el7.x86_64
[root@VM-4-11-centos ~]# cat /proc/version
Linux version 3.10.0-1160.11.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Fri Dec 18 16:34:56 UTC 2020

二、安装vsftpd

# 1. 检查是否安装了ftp
rpm -qa |grep vsftpd
vsftpd -v
# 2. yum安装ftp
yum install -y vsftpd
# 3.启动ftp服务
service vsftpd start
# 4.查看ftp服务状态
service vsftpd status
# 查看当前端口开放情况
netstat -nlpt
netstat -nltp | grep 21
# 查看FTP目录
curl ftp://10.0.4.11

三、配置vsftpd

# 默认安装目录
[root@VM-4-11-centos ~]# cd /etc/vsftpd
[root@VM-4-11-centos vsftpd]# ll
总用量 20
-rw------- 1 root root  125 610 00:15 ftpusers # 禁止登录ftp用户
-rw------- 1 root root  361 610 00:15 user_list # 待授权访问的用户
-rw------- 1 root root 5116 610 00:15 vsftpd.conf # 配置文件
-rwxr--r-- 1 root root  338 610 00:15 vsftpd_conf_migrate.sh

# 如果vsftpd.conf 中 userlist_deny=YES(默认),则决不允许user_list中的用户使用ftp登陆。userlist_deny=NO,则仅允许此文件中的用户。
# 默认情况下vsftpd还检查ftpusers文件里有哪些用户被拒绝。


# 禁用匿名访问和切换根目录
vim /etc/vsftpd/vsftpd.conf
# 禁用匿名用户
anonymous_enable=NO
# 禁止切换根目录(还需要设置allow_writeable_chroot,否则无法登录)
# chroot_local_user=YES
# allow_writeable_chroot=YES
# 重启
service vsftpd restart

# 创建 FTP 用户
useradd ftp_wangfugui
# 设置密码
echo "123456" | passwd ftp_wangfugui --stdin
# 限制该用户仅能通过 FTP 访问,不能登录系统
usermod -s /sbin/nologin ftp_wangfugui
# 为用户分配主目录
mkdir -p /home/ftp_wangfugui/ftp/pub
# /home/ftp_wangfugui/ftp 为主目录, 该目录不可上传文件
# /home/ftp_wangfugui/ftp/pub 文件只能上传到该目录下
chmod a-w /home/ftp_wangfugui/ftp && chmod 777 -R /home/ftp_wangfugui/ftp/pub
# 创建登录欢迎文件
echo "Welcome to use FTP service." > /home/ftp_wangfugui/ftp/welcome.txt
# 设置为用户的主目录,-d <登录目录>
usermod -d /home/ftp_wangfugui/ftp ftp_wangfugui

# 访问FTP
# 关闭SELinux服务
setenforce 0
# 关闭防火墙
service iptables stop 或 iptables  -F

四、客户端ftp

基础命令
yum install -y ftp
# 登录
ftp 10.0.3.11 21
echo "hello world" > aa.txt
# 上传xxx.txt 
put xxx.txt 
# 下载xxx.txt 
get xxx.txt 
无法登录
# 检查 pam 保护机制:该配置项的含义为仅允许用户的shell为/etc/shells文件内的shell命令时,才能够成功,而创建ftp用户时,为了禁止ssh登录,一般多为/bin/false 、/usr/sbin/nologin 等,显然不是一个有效的bash,也就无法登录了。
vim /etc/pam.d/vsftpd
# 将 auth required pam_shells.so 修改为-> auth required pam_nologin.so 
auth required pam_nologin.so 
或者直接注释掉
#auth    required pam_shells.so
# 重启vsftpd
service vsftpd restart
登录慢卡

当客户端连接服务器时,服务器会执行一个DNS查找,来确认域名,如果所用DNS解析不到,会等到超时为止。

vim /etc/vsftpd/vsftpd.conf
# 不查找dns服务器
reverse_lookup_enable=NO
# 重启
service vsftpd restart

FTP客户端切换模式
# 关闭被动模式,再次执行该命令就可以启用
ftp> passive
Passive mode off.

可登录,无法读写

报错:

curl: (67) Access denied: 530

553 Could not create file.

550 Failed to open file.

解决1:检查目录

我们的工作目录是/home/ftpserver/ftp/pub,客户端登录默认为/home/ftpserver/ftp。

  • 如果使用ftp客户端工具,则需要:ftp> cd pub

  • 如果是Java客户端

    // 转移工作目录至指定目录下
    client.changeWorkingDirectory("pub");
    

解决2:检查权限

检查ftp工作目录的权限。

ls -l /home/ftpserver
dr-xr-xr-x 3 root root 4096 66 16:36 ftp    # 无写入权限

# 加入写权限
chmod +w /home/ftpserver

解决3:主被动模式

PORT(主动 - active mode)模式:服务器的21准入和20准出,客户端配置允许服务器连接。

PASV(被动 - passive mode)模式:服务器随机打开大于1024的tcp端口和21端口。(服务器有防火墙应该设置为被动模式,服务端配置端口区间。)

开启被动模式:

(1)修改/etc/vsftpd/vsftpd.conf文件配置

# 服务器开放21,20,10022端口
pasv_enable=yes
#pasv_promiscuous=no (Default: NO) 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=10022
pasv_min_port=10022
# 重启
service vsftpd restart

(2)Java使用FTPClient客户端

// 启动被动模式
client.enterLocalPassiveMode();

五、卸载vsftpd

service vsftpd stop
yum remove vsftpd
rpm -qa |grep vsftp

六、使用

FTP服务:10.0.3.11       21
FTP用户:ftp_wangfugui
FTP密码:123456
FTP目录:/home/ftp_wangfugui/ftp/pub

Java客户端

# 转移工作目录至指定目录下 /home/ftp_wangfugui/ftp/pub
client.changeWorkingDirectory("pub");
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值