Linux FTP
FTP是什么?
FTP:File Transfer Protocol,即文件传输协议,是基于TCP/IP网络协议的,用于在网络环境的计算机之间交互和传输文件。
FTP怎么用?
FTP的应用一般是采用C/S架框架,即客户端&服务端。
FTP的服务端
在Linux环境下,可以用 vsftpd 来搭建 FTP 服务。
vsftpd的安装&卸载
- 安装 vsftpd
apt install vsftpd ---安装软件
vsftpd -v ---查看版本
- 卸载 vsftpd
apt purge vsftpd ---完全卸载及附属相关文件
apt remove vsftpd ---卸载软件
vsftpd 配置
vsftpd的配置文件默认是在**/etc/vsftpd.conf**,修改前可以复制备份一份旧版本配置文件,以便需要时恢复。
原始版本的配置文件需要修改的配置如下:
write_enable=YES ---开启写,上传文件功能所必须的
其它配置
- 开启防火墙,并放开21端口
--- 防火墙安装
apt intall ufw ---如果系统没有就安装一下
--- 防火墙开启&关闭
ufw default deny ---关闭防火墙(其它计算机不法访问)
ufw enable ---开启防火墙
--- 21端口开放&关闭
ufw allow 21 ---开放21端口
ufw deny 21 ---禁用21端口
ufw delete allow 21 ---删除开放21端口这条规则
vsftp 开启 & 关闭 & 重启
service vsftpd start ---开启
service vsftpd stop ---关闭
service vsftpd restart ---重启
查看服务
systemctl status vsftpd.service ---查看vsftpd服务的状态
netstat -ntl ---查看端口
whereis vsftpd ---查看目录
FTP 客户端
一般linux就有装 ftp 这个组件,也是 ftp 客户端,没有的话可以手动安装一下。
ftp常用命令
---登录
ftp <host> <port> ---连接后,按提示输入用户名&密码
open <host> <port> ---输入ftp后,可用open打开一个连接
---目录操作
ls <option> ---打印远端(服务端)目录列表,用法跟linux的 ls 一样一样
!ls <option> ---打印本地目录列表,“!”用以区分远程和本地
cd <dir> ---切换目录
lcd <dir> ---切换本地目录
mkdir <name> ---创建目录
---下载文件
get <file_name> <new_name> ---下载文件,new_name可指定可不指定
mget *.txt ---mget + 通配符,下载多个文件
---上传文件
put <file_name> <new_name> ---上传文件,new_name可指定可不指定
put <file> ---绝对路径上传文件
mput *.txt ---mput + 通配符,上传多个文件
---其它
! ---从远程FTP切换回本地
exit ---与“!”配合使用,即回到远程FTP,否则就是退出and结束ftp连接
pwd ---显示当前路径
user <user_name> <password> ---指定用户登录FTP服务器
open <ftp_server_name> ---和指定的FTP服务器连接
status ---显示当前ftp状态
binary ---声明采用字节来传输文件
上传文件遇到的一些问题
229 Entering Extended Passive Mode (|||xxxxx|)
- 问题: “进入扩展被动模式”。
- 原因:原FTP连接模式有 PORT(主动)和 PASV(被动)两种模式;在FTP引入IPV6后,为解决多协议环境下的失败问题而引入了扩展,即得到连接模式 EPRT 和 EPSV,但老版本的 FTP 对 EPRT 的兼容性不好。
- 解决方案:关闭 EPRT,命令:epsv4 off
227 Entering Passive Mode
- 问题: “进入被动模式”
- 原因:PASV(被动)模式,在传送数据时,需要服务器告诉客户端要往哪个端口传输数据,但服务器上的FTP仅允许特定的端口(只开发了21端口)被客户连接,是没办法用被动模式的。
- 解决方案:关闭被动模式,命令:passive (passive重复执行即切换开启/关闭)
550 Pemission denied
- 问题: 上传被拒绝
- 原因:FTP服务器(vsftpd)的配置项中,write_enable配置了NO
- 解决方案:修改服务端配置
put: Access failed: 553 Could not create file
- 问题: 权限原因,不能在远程创建文件(即在服务端的目录上保存上传的文件)
- 原因:与登录FTP服务器的用户有关,用户如果在远程目录上没有写权限的话,也就没办法保存上传的文件了。
- 解决方案:
- 给用户加目录的权限
- 切换到用户有权限的目录上传文件
PS:在上传时,本地目录和远程目录(服务端)要先选择好,可以直接用文件名来 put 。
注意:本文归作者所有,未经作者允许,不得转载