我会为你详细讲解这两个方面。
第一部分:作为客户端(使用 FTP 命令连接其他服务器)
Linux 系统通常自带一个基本的 FTP 命令行客户端工具,叫做ftp
。
通常系统已自带,如果没有,可以使用包管理器安装:
Ubuntu/Debian:
sudo apt update && sudo apt install ftp
CentOS/RHEL/Fedora:
sudo yum install ftp # CentOS 7 或更早 sudo dnf install ftp # CentOS 8 / Fedora
基本连接语法 ftp [选项] [主机名或IP地址] [端口] 示例:连接到一个 FTP 服务器 (默认端口 21) ftp 192.168.1.100
执行命令后,它会提示你输入用户名和密码。
连接成功后,你会进入ftp>
提示符,以下是一些最常用的命令:
命令 | 全称 | 作用 |
ls | List | 列出服务器上当前目录的文件 |
cd [目录名] | Change Directory | 切换服务器上的目录 |
lcd [目录名] | Local Change Directory | 切换本地机器的目录 |
get [文件名] | Get | 从服务器下载一个文件到本地当前目录 |
mget [文件名模式] | Multiple Get | 使用通配符(如 )下载多个文件 |
put [文件名] | Put | 从本地上传一个文件到服务器 |
mput [文件名模式] | Multiple Put | 使用通配符上传多个文件 |
binary | 设置传输模式为二进制(用于传输图片、压缩包、程序等) | |
ascii | 设置传输模式为文本(用于传输纯文本文件) | |
passive /pass | 切换被动模式(PASV),用于解决某些防火墙后的连接问题 | |
bye /quit | 断开连接并退出 FTP 客户端 | |
! | 临时跳出到本地 Shell(输入exit 返回 FTP) | |
help [命令] | 查看所有命令或某个特定命令的帮助 |
示例操作流程:
$ ftp 192.168.1.100 Connected to 192.168.1.100. Name (192.168.1.100:user): your_username # 输入用户名 331 Please specify the password. Password: # 输入密码(不显示) 230 Login successful. ftp> ls # 查看服务器文件 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 Apr 10 10:00 downloads -rw-r--r-- 1 0 0 1234567 Apr 10 09:30 file.zip 226 Directory send OK. ftp> binary # 设置为二进制模式,准备下载压缩包 200 Switching to Binary mode. ftp> get file.zip # 下载 file.zip 文件 local: file.zip remote: file.zip 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for file.zip (1234567 bytes). 226 Transfer complete. 1234567 bytes received in 0.5 secs (2469.134 kB/s) ftp> put local_file.txt # 上传一个本地文件 ftp> bye # 退出 221 Goodbye.
第二部分:作为服务器端(搭建 FTP 服务)
在 Linux 上搭建 FTP 服务器,最常用、最易用的软件是vsftpd (Very Secure FTP Daemon)。
Ubuntu/Debian:
sudo apt update sudo apt install vsftpd
CentOS/RHEL:
sudo yum install vsftpd # CentOS 7 sudo dnf install vsftpd # CentOS 8 / Fedora
sudo systemctl start vsftpd # 启动服务 sudo systemctl enable vsftpd # 设置开机自动启动 sudo systemctl status vsftpd # 检查服务状态
主配置文件位于/etc/vsftpd.conf
,修改前务必先备份!
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup # 备份 sudo nano /etc/vsftpd.conf # 使用 nano 编辑器修改
以下是一些常见且重要的配置选项(找到并修改或取消注释):
禁止匿名用户登录(提高安全性) anonymous_enable=NO 允许本地系统用户登录 local_enable=YES 允许用户有写权限(上传、删除等) write_enable=YES 设置本地用户创建文件时的默认掩码(权限) 022 表示新创建的文件权限为 644,文件夹为 755 local_umask=022 有些客户端需要这个选项来正常工作 allow_writeable_chroot=YES 启用被动模式(PASV)设置,这对通过防火墙的客户端很重要 pasv_enable=YES pasv_min_port=30000 # 被动模式端口范围下限 pasv_max_port=31000 # 被动模式端口范围上限 如果你的服务器在 NAT/防火墙后,需要设置为你服务器的公网IP pasv_address=你的公网IP地址
4. 创建 FTP 专用用户(推荐,更安全)
不建议直接使用 root 用户,创建一个新用户专门用于 FTP:
创建一个系统用户,并指定其家目录(/var/ftp/user1) sudo useradd -m -d /var/ftp/user1 -s /bin/bash user1 sudo passwd user1 # 为 user1 设置一个强密码 禁止该用户通过 SSH 登录,只允许 FTP,增加安全性 sudo usermod -s /usr/sbin/nologin user1 确保该用户对其家目录有写权限 sudo chown -R user1:user1 /var/ftp/user1
如果你的服务器开启了防火墙(如ufw
或firewalld
),需要放行 FTP 端口。
放行端口 21 (命令通道) 和 30000-31000 (被动模式数据通道)
使用 ufw (Ubuntu):
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 30000:31000/tcp sudo ufw reload
使用 firewalld (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp sudo firewall-cmd --reload
sudo systemctl restart vsftpd
你就可以使用任何 FTP 客户端(如 FileZilla, WinSCP,或上面介绍的命令行工具)来连接你的 Linux FTP 服务器了。
1、FTP 是不安全的协议:它使用明文传输用户名、密码和数据,极易被窃听。
2、强烈建议:在公网或生产环境中,不要使用传统的 FTP。
3、替代方案:
SFTP (SSH File Transfer Protocol)基于 SSH,加密所有传输内容,Linux 服务器只要开启了 SSH 服务(默认都开启),就天然支持 SFTP。这是最简单、最安全的替代方案,使用时,客户端选择SFTP
协议,使用 SSH 用户名和密码即可。
FTPS (FTP over SSL/TLS)为 FTP 添加 SSL/TLS 加密层,vsftpd 也支持此功能,但配置比 SFTP 复杂。
对于个人或内部网络,可以使用 FTP 方便地传输文件,但在互联网上,请务必使用 SFTP 或 FTPS 来保证安全。
文章摘自:https://idc.huochengrm.cn/fwq/13819.html
评论