FTP服务介绍 一
2024-03-29 14:12:14

FTP服务介绍 一

FTP是File Transfer Protocol(文件传输协议),用来进行服务器和客户端之间文件传输的协议 。非常常用的服务 ,应用场景主要在设备间文件共享,服务程序发布 ,日志文件管理等方面。这里我在ubuntu环境下安装和测试ftp的几个服务 。

FTP分类

FTP

FTP是基于TCP的传输,并且FTP采用双TCP连接方式。

支持用户登录认证和目录列出。

控制连接使用TCP端口号21;用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息 。

数据连接使用TCP端口号不是确定的,需要根据使用的数据传输模式确定 ,主动模式下端口号是20 ,被动模式下随机 。

SFTP

SFTP(SSH File Transfer Protocol)是一种基于SSH的安全的文件传输协议 ,SSH前面有详细介绍这里不再赘述。

TFTP

简单文件传输协议(Trivial File Transfer Protocol ,TFTP)是 TCP/IP 协议族中一种简单的文件传输协议 ,用来在客户端与服务器之间进行文件传输。

TFTP 基于UDP协议进行文件传输 。与FTP协议不同的是,TFTP 传输文件时不需要用户进行登录。它只能从文件服务器上下载或上传文件,不能列出目录 。

TFTP在嵌入式系统中传输文件使用比较多 ,因为u-boot本身就支持这个协议传输文件 ,可以用来进行目标机程序下载 。

Ubuntu 安装FTP服务

安装vsftps服务

ubuntu@ubuntu-virtual-machine:~$ sudo apt install vsftpd

配置文件 /etc/vsftpd.conf

这里直接粘贴一个可以使用的ftp配置文件全文内容,也是来源于网上的教程,但是我也是使用的这个配置文件 ,所以确保是可以使用的。

listen=NOnlisten_ipv6=YESnanonymous_enable=NOnlocal_enable=YESnwrite_enable=YESndirmessage_enable=YESnuse_localtime=YESnxferlog_enable=YESnconnect_from_port_20=YESnchroot_local_user=YESnsecure_chroot_dir=/var/run/vsftpd/emptynpam_service_name=vsftpdnrsa_cert_file=/etc/ssl/private/vsftpd.pemnrsa_private_key_file=/etc/ssl/private/vsftpd.pemnssl_enable=NOnuser_sub_token=$USERnlocal_root=/home/$USER/ftpnpasv_min_port=30000npasv_max_port=31000nuserlist_enable=YESnuserlist_file=/etc/vsftpd.user_listnuserlist_deny=NO

防火墙配置

前面说到了ftp服务将使用20和21两个网络端口 ,所以避免防火墙限制,我们设置一下防火墙 。

ubuntu@ubuntu-virtual-machine:~$ sudo ufw allow 20:21/tcpn防火墙规则已更新n规则已更新(v6)nubuntu@ubuntu-virtual-machine:~$ sudo ufw allow 30000:31000/tcpn防火墙规则已更新n规则已更新(v6)nubuntu@ubuntu-virtual-machine:~$ sudo ufw disablen防火墙在系统启动时自动禁用nubuntu@ubuntu-virtual-machine:~$ sudo ufw enablen此命令可能会中断目前的 ssh 连接 。要继续吗 (y|n)? yn在系统启动时启用和激活防火墙nubuntu@ubuntu-virtual-machine:~$

创建ftp登录账户

我们为ftp服务器创建单独的账户 ,这个对于中大型的网络环境安全是必须的 ,同时设置此账户只能用来访问ftp服务。

ubuntu@ubuntu-virtual-machine:~$ sudo adduser ftpuser1n正在添加用户"ftpuser1"...n正在添加新组"ftpuser1" (1002)...n正在添加新用户"ftpuser1" (1002) 到组"ftpuser1"...n创建主目录"/home/ftpuser1"...n正在从"/etc/skel"复制文件...n新的 密码: n重新输入新的 密码: npasswd :已成功更新密码n正在改变 ftpuser1 的用户信息n请输入新值 ,或直接敲回车键以使用默认值n 全名 []: ftpuser1n 房间号码 []: n 工作电话 []: n 家庭电话 []: n 其它 []: n这些信息是否正确 ? [Y/n] ynubuntu@ubuntu-virtual-machine:~$ echo "ftpuser1" | sudo tee -a /etc/vsftpd.user_listnftpuser1nubuntu@ubuntu-virtual-machine:~$ cat /etc/vsftpd.user_list nftpuser1nubuntu@ubuntu-virtual-machine:~$ sudo mkdir -p /home/ftpuser1/ftp/uploadnubuntu@ubuntu-virtual-machine:~$ sudo chmod 550 /home/ftpuser1/ftpnubuntu@ubuntu-virtual-machine:~$ sudo chmod 750 /home/ftpuser1/ftp/uploadnubuntu@ubuntu-virtual-machine:~$ sudo chown -R ftpuser1: /home/ftpuser1/ftpnnubuntu@ubuntu-virtual-machine:~$ echo -e '#!/bin/shnecho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponlynubuntu@ubuntu-virtual-machine:~$ sudo chmod a+x /bin/ftponlynubuntu@ubuntu-virtual-machine:~$ echo "/bin/ftponly" | sudo tee -a /etc/shellsnubuntu@ubuntu-virtual-machine:~$ sudo usermod ftpuser1 -s /bin/ftponly

至此ubuntu下ftp服务安装完成,我们可以使用systemctl 命令看一下服务运行是否正确

ubuntu@ubuntu-virtual-machine:~$ sudo systemctl status vsftpd.service n● vsftpd.service - vsftpd FTP servern Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)n Active: active (running) since Sun 2022-06-26 19:03:52 CST; 16min agon Process: 1047 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCC> Main PID: 1053 (vsftpd)n Tasks: 1 (limit: 4578)n Memory: 772.0Kn CGroup: /system.slice/vsftpd.servicen └─1053 /usr/sbin/vsftpd /etc/vsftpd.confnn6月 26 19:03:51 ubuntu-virtual-machine systemd[1]: Starting vsftpd FTP server...n6月 26 19:03:52 ubuntu-virtual-machine systemd[1]: Started vsftpd FTP server.nlines 1-12/12 (END)

Windows FTP客户端使用

我们在Windows下使用一个ftp客户端访问ubuntu的ftp测试安装是否正确,这里我使用的是filezilla的ftp客户端软件。

可以访问官网下载:FileZilla中文网 - 免费开源的FTP解决方案

这里简单介绍一下使用方法 ,打开filezilla软件以后 ,左上角有一个站点管理按钮,点击并参考下面的设置新建一个站点 。

FTP服务介绍 一

ftp 站点

新建站点以后点击连接 ,会提示输入密码  ,按照创建ftp登录用户时创建的密码输入即可登录 。

FTP服务介绍 一

ftp 登录

可以看到ftp登录成功 ,左侧显示本机Windows的文件目录,右侧显示ubuntu服务器制定的ftp目录  ,两边的文件夹可以相互进行文件传输 ,传输过程和状态将在filezilla软件下方显示。

Windows SFTP客户端使用

现在一般使用ftp服务的比较少 ,使用SFTP的更多,因为SFTP确实也比较方便不需要单独进行服务配置,只要支持SSH登录一般就可以使用SFTP。

filezilla也支持使用SFTP登录服务器,非常简单,知识在创建站点的时候协议选择稍微修改一下就可以了 。

FTP服务介绍 一

sftp 站点

点击连接输入密码即可连接成功  。

FTP服务介绍 一

sftp 登录

文末

如果没有特殊要求建议首选SFTP。

还有一个TFTP在后面继续介绍 ,因为这个服务涉及一些不同的命令 。

(作者:汽车电瓶)