20191028
最近公司需要用到ftp,趁周末抓紧时间学习一下。
一、简介
ftp全称file transfer protocol,是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。在类linux上,流行的ftp软件是vsftpd,全称Very Secure FTP Server。
ftp主动模式与被模式
1. ftp主动模式工作流程:
1)服务端监听21端口(一般使用21端口)
2)客户端以随机端口连接到服务端21端口。这个连接是控制连接。
3)在需要传输数据时,客户端在随机端口开启监听,并告诉服务端自己监听的端口。
4)服务端以20端口作为源端口,连接ftp客户端,然后发送/接收数据。
特点:
1)服务端不需要监听其他端口,访问客户端时使用固定端口21,减小了防火墙的配置难度,提高了服务端的安全性。
2)客户端如果处于内网之中,服务端可能无法主动连接到客户端。所以相对而言,主动模式没有被动模式通用。
2. ftp被动模式工作流程
1)服务端监听21端口(一般使用21端口)
2)客户端以随机端口连接到服务端21端口。这个连接是控制连接。
3)在需要传输数据时,服务端在随机端口开启监听,并告诉客户端自己监听的端口。
4)客户端以随机端口作为源端口,连接ftp服务端,然后接收/发送数据。
特点:
1)服务端需要监听随机端口,增大防火墙配置难度。
2)不再受客户端处于内网的限制。从物理网络上来说,只要客户端能连接到服务端的21端口,连接到随机端口肯定也没问题。
3. linux命令行使用主动模式/被动模式
服务端可以同时工作于主动模式和被动模式,客户端可以决定自己要使用的模式。由于lftp比ftp提供了更多的功能,所以我比较喜欢使用lftp。
lftp默认工作于被模式,如果需要设置的话,可以在/etc/lftp.conf中设置:set ftp:passive-mode off
二、vsftpd配置
vsftpd启动以后,默认会禁止root用户的登陆。
但是允许其他本地用户的登陆(local_enable=YES),登陆用户名和密码与使用ssh登陆相同,登陆后的根目录就是各个用户的home目录。
禁止用户列表:/etc/ftpusers
vsftpd的配置文件为:/etc/vsftpd.conf
允许匿名用户登陆:anonymous_enable=YES
匿名用户登陆的时候,用户名输入ftp或者anonymous。密码随便输入或者直接回车即可。
no_anon_password=YES
设置此选项后,使用匿名用户登陆时,不会有提示输入密码的步骤,而是直接登陆
anon_root=/var/ftp/
指定匿名用户登陆后显示的根目录位置。(此目录nobody用户密码要有读权限?)。一直没搞明白,如果不指定,匿名用户登陆后的根目录对应系统的目录是啥。
write_enable=YES
如果需要上传权限,需要开启此选项。
参考:
最好的参考文档就是man手册: man 5 vsftpd.conf
Linux安装vsftpd及配置详解
三、 lftp常用命令
lftp copbint:xxxx@127.0.0.4
命令行直接指定用户名密码登陆
get xxx
下载文件。默认会下载到客户端的工作目录(打开ftp客户端时所处的目录)
send xxx
上传文件。
dir
显示目录下的文件
pwd
显示当前路径