Ubuntu 18.04 FTP服务器搭建
安装
sudo apt-get install vsftpd
配置
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak sudo vim /etc/vsftpd.conf
vsftpd.conf
anonymous_enable=NO #让本地账号可以访问 local_enable=YES #允许本地用户登陆 write_enable=YES #写权限 local_umask=022 Passive mode pasv_enable=YES ;允许被动模式 pasv_min_port=41000 pasv_max_port=42000 #流量控制 max_clients=100 ; 允许的最大连接数,定义为100,默认为0,表没有限制 max_per_ip=5 ; 每个IP允许的连接数,0表没有限制,需要运行于独立模式方可 local_max_rate=200000 ;用户宽带限制 200k #锁定目录 chroot_local_user=YES ;禁止用户离开主目录 chroot_list_enable=NO #chroot_list_enable=YES # 如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录 #chroot_list_file=/etc/vsftpd/chroot_list # 指定限制的用户文件 allow_writeable_chroot=YES #listen=YES # ftp服务器将处于独立启动模式 local_root=/home/ftp # 设置一个本地用户登录后进入到的目录 # 其它 dirmessage_enable=YES xferlog_enable=YES # 允许虚拟用户 guest_enable=YES guest_username=vsftpd user_config_dir=/etc/vsftpd_user_conf pam_service_name=vsftpd.vu anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_umask=022 anon_max_rate=50000 ;匿名用户最大带宽,单位为bps
root账号登录
1、vim /etc/ftpusers
2、注释掉 root 用户
添加用户,分配权限
添加目录
mkdir /home/ftp # 创建根目录
mkdir /home/ftp/data # 创建子目录
chmod -R 777 /home/ftp # 修改ftp这个目录的权限
添加用户
touch /etc/vsftpd/allowed_users # 创建一个文件allowed_users,添加完用户有写入改文件
useradd -d /home/ftp/data -s /sbin/nologin zhangxw # 添加访问用户
passwd zhangxw # 设置该用户的密码
删除用户
userdel zhangxw # 删除ftp某个用户
多用户多权限FTP
chmod 755 /var/ftp # 更改根目录访问权限 #添加用户 ftp_pub 并设置归属用户组为 ftp-g 以及设置缺省目录(FTP登陆目录) useradd -g ftp -d /home/ftp/user1 user1 passwd user1 chown user1:ftp /home/ftp/user1 # 更改文件所有者 mkdir /var/ftp/user1 # 创建目录 chmod -R ug=rw,o= /var/ftp/user1 # 更改权限
常用命令
sudo service vsftpd start # 启动 sudo service vsftpd status # 查看vsftpd的状态 sudo service vsftpd restart ftp ip #登录,例如ftp 1.1.1.1 cd # 目录切换 ls|dir #列出当下目录中文件内容 quit|close|bye # 退出 get|mget 目的文件 下载位置 #下载文件,get下载单个文件,mget下载多个文件.*.*代表所有文件 put local_filt remote_fil # 上传文件
Connect to FTP server
$ ftp ftp-server-ip Connected to ubuntu-ftp. 220 (vsFTPd 3.0.3) Name (ubuntu-ftp:lubos): ftpuser 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 12 Feb 15 08:34 FTP-TEST -rw-r--r-- 1 1001 1001 8980 Apr 20 2016 examples.desktop 226 Directory send OK. ftp>
Open Nautilus and click on Other Locations
. Enter ftp://FTP-SERVER-HOSTNAME-OR-IP-ADDRESS
and click Connect
.
FTP 浏览器访问地址:
ftp:ip
通过外网端口映射访问FTP
首先了解,FTP使用两个端口进行通信。一个作为控制端口(登陆用),一个作为数据传输端口。
主动模式:客户端请求21 20两个固定端口进行连接。所以如果要经过外网映射用主动模式通信的话除非把外网端口21映射为内网的21,外网的20映射为内网的20才行。
被动模式:客户端连接到服务器21端口后,服务器返回一个任意>1024的端口给客户端,客户端连接此数据端口。
1)port方式:主动模式 port(主动)方式的连接过程是: 客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,服务器从20端口向客户端的空闲端口发送连接请求,建立一条数据链路来传送数据。 2)pasv方式:被动模式 pasv(被动)方式的连接过程是: 客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,客户端向服务器的空闲端口发送连接请求,建立一条数据链路来传送数据
问题:装好VSFTP后,FTP不能使用,提示PASV模式失败,尝试PORT模式。
原因:iptables防火墙挡住了PASV的端口
解决:修改VSFTP配置文件,开放防火墙端口
1.打开VSFTP配置文件
vi /etc/vsftpd/vsftpd.conf
未尾添加:
pasv_enable=YES # 设置是否允许pasv模式 pasv_min_port=40000 # pasv使用的最小端口 pasv_max_port=40080 # pasv使用的最大端口 pasv_promiscuous=YES # 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
2.打开iptables文件
vi /etc/sysconfig/iptables
加入:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 40000:40080 -j ACCEPT
第三方工具
使用Xftp工具。相信很多使用Linux服务的小伙伴都知道这个工具。具体的安装、下载就不多说了,比较简单。下面是它的使用。
打开这个工具,新建一个连接,具体的配置,如下图所示,
参考地址
https://linuxconfig.org/how-to-setup-ftp-server-on-ubuntu-18-04-bionic-beaver-with-vsftpd
通过外网端口映射访问FTP 作者:Lubos Rendek原文链接:https://blog.csdn.net/geqiandebei/article/details/45886843
https://blog.csdn.net/hajistark/article/details/82954777
https://www.cnblogs.com/spaceship9/archive/2013/06/27/3159243.html
作者:「zxw136511485」 原文链接:https://blog.csdn.net/zxw136511485/article/details/79460671