目录
什么是vsftpd
vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd是软件的名字 是一个ftp服务 运行在应用层的服务
用来做文件下载服务器使用
补充:
osi 7层参考模型
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
tcp/ip 4层模型
应用层 ftp 应用层协议 nfs http nginx sshd
传输层 21 20 80 22
网络层
数据链路层
物理层
给开发者做参考 网络应用 web
web服务器apache
apache nginx 都是web服务
apache 排名第一 全球使用量30%
nginx 排名第二 全球使用量30%
ibm
apache 重 并发量低 非常稳定
nginx 轻量级的web服务器 高并发 配置方便
安装软件(服务器端)
# yum install vsftpd -y
启动服务
# systemctl start vsftpd
# lsof -i:21
测试
# touch a.txt
# cp a.txt /var/ftp/pub
# echo hello > /var/ftp/pub/a.txt
客户端
可以使用 浏览器 资源管理器 图形第三方客户端工具 命令行的ftp客户端 当作客户端
命令行工具lftp
# yum install vsftpd -y
# yum install lftp -y
# ping 服务端ip
下载文件
# lftp 服务端ip地址
> cd pub
> get a.txt
> get -O 本地路径 a.txt
下载目录
> mirror /test 目的目录
> mirror /test /test
上传文件
修改配置文件,打开上传功能
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
# systemctl restart vsftpd
# lftp 192.168.26.176
> cd pub
> put a.txt //如果上传不了,查看目录权限
> mkdir hello
注意:刚上传到的文件下载不了,需要改权限
上传文件需要更改的权限
chmod 777 /var/ftp/pub -R
下载文件需要更改的权限
chmod 777 /var/ftp/pub/a.txt
注意:/var/ftp 这个目录的权限最高755
上传目录
> mirror -R /test
切换本地路径
>lcd
lcd 命令只影响本地计算机上的工作目录,而不是远程服务器上的目录。要更改远程服务器上的目录,请使用 cd 命令。
本地账户和匿名账户
用给ftp的账户
本地账户:系统账户可以当作vsftpd服务的账户使用
匿名账户:使用"ftp"账户当作vsftpd的账户 默认就是它 不需要加用户名
# lftp 服务端ip
# lftp -u ftp 服务端ip
匿名账户发布文件的默认目录:/var/ftp/
# lftp -u 服务端ip
本地账户发布文件的默认目录:账户的家目录
# lftp -u lilei,密码 服务端ip
工作模式
主动模式
被动模式
-
FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
-
FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
客户端向服务端发起请求
# vim /etc/vsftpd/vsftpd.conf
pasv_min_port 1025
pasv_max_port 1030
# systemctl restart vsftpd
附:脚本实现:安装vsftpd并配置文件上传下载功能
服务端
vim vsftpd_install.sh
#! /bin/bash
systemctl stop vsftpd
yum erase vsftpd -y &> /dev/null
rm -rf /etc/vsftpd/vsftpd.conf
systemctl disable firewalld
setenforce 0
yum install vsftpd lftp -y &> /dev/null
systemctl start vsftpd
if [ $? -eq 0 ];then
echo Vsftpd 安装 [成功]
else
echo Vsftpd 安装 [失败]
exit
fi
#修改配置文件
#cp /vsftpd.conf /etc
echo 'anon_upload_enable=YES' >> /etc/vsftpd/vsftpd.conf
echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
# ======================客户端测试=====================================================
echo test >> /testfile
rm -rf /var/ftp/pub/*
chmod 777 /var/ftp/pub -R
ip=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | cut -d '=' -f 2`
#注意查看一下配置文件是否存在,选择合适分隔符号
#上传功能测试
lftp $ip <<EOF
cd pub
put /testfile
exit
EOF
if [ -e /var/ftp/pub/testfile ];then
echo 上传功能配置成功
else
echo 上传功能配置失败
exit
fi
# 下载功能测试
chmod 777 /var/ftp/pub/testfile
rm -rf /tmp/*
lftp $ip <<EOF
cd pub
get -O /tmp/ testfile
exit
EOF
if [ -e /tmp/testfile ];then
echo 下载功能配置成功
else
echo 下载功能配置失败
exit
fi
注意设置静态IP
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=ip地址
PREFIX=24
GATEWAY=网关
DNS1=域名
服务端远程
vim vsftpd_install.sh
#! /bin/bash
systemctl stop vsftpd
yum erase vsftpd -y &> /dev/null
rm -rf /etc/vsftpd/vsftpd.conf
systemctl disable firewalld
setenforce 0
yum install vsftpd lftp -y &> /dev/null
systemctl start vsftpd
if [ $? -eq 0 ];then
echo Vsftpd 安装 [成功]
else
echo Vsftpd 安装 [失败]
exit
fi
#修改配置文件
#cp /vsftpd.conf /etc
echo 'anon_upload_enable=YES' >> /etc/vsftpd/vsftpd.conf
echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
#===============================远程客户端测试==========================================
scp lftp.sh 客户端ip:/
ssh 客户端ip 'bash /lftp.sh'
vim lftp.sh
# ======================客户端测试================================
ip=服务端ip
# 创建测试文件
echo test >> /testfile
ssh $ip 'rm -rf /var/ftp/pub/*'
ssh $ip 'chmod 777 /var/ftp/pub -R'
#上传功能测试
lftp $ip <<EOF
cd pub
put /testfile
exit
EOF
ssh $ip 'if [ -e /var/ftp/pub/testfile ];then
echo 上传功能配置成功
else
echo 上传功能配置失败
exit
fi'
# 下载功能测试
ssh $ip 'chmod 777 /var/ftp/pub/testfile'
rm -rf /tmp/*
lftp $ip <<EOF
cd pub
get -O /tmp/ testfile
exit
EOF
if [ -e /tmp/testfile ];then
echo 下载功能配置成功
else
echo 下载功能配置失败
exit
fi
客户端需要提前设置免密登录
client操作:制作密钥对
# ssh-keygen //一路回车
# cd /root/.ssh/
# ls
id_rsa(私钥) id_rsa.pub(公钥) known_hosts
私钥自己拿着 不能给别人
公钥给别人 公钥给了谁,拿着公钥的人就能远程登录谁
拷贝公钥(id_rsa.pub文件的内容)到远程机器上
# ssh-copy-id 服务端ip
测试无密码登录:
# ssh 客户端ip
最后结果图示: