初体验linux下的ftp

rollo 1年前 ⋅ 296 阅读

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服务器的用户有关,用户如果在远程目录上没有写权限的话,也就没办法保存上传的文件了。
  • 解决方案:
    1. 给用户加目录的权限
    2. 切换到用户有权限的目录上传文件

PS:在上传时,本地目录远程目录(服务端)要先选择好,可以直接用文件名来 put 。


全部评论: 0

    我有话说:

    目录