FTP简介
FTP(File Transfer Protocol)即文件传输协议,是互联网最早的传输协议之一,其最主要的功能是服务器和客户端之间的文件传输。FTP使用户可以通过一套标准的命令访问远程系统上的文件,而不需要直接登录远程系统。FTP协议提供了两种工作模式:标准模式和被动模式。在标准模式下,客户端通过控制连接建立与服务器的连接,并通过数据连接进行数据传输。在被动模式下,客户端发出PASV命令,服务器返回一个端口号,客户端通过端口号与服务器建立数据连接,进行数据传输。FTP协议通常用于网站维护、文件共享和软件下载等方面。
另外,FTP服务器还提供了如下主要功能:
用户分类
默认情况下,FTP服务器依据登录情况,将用户分为实体用户(real user)、访客(guest)、匿名用户(anonymous)三类。三类用户对系统的访问权限差异较大,实体用户具有较完整的访问权限,匿名用户仅有下载资源的权限。
命令记录和日志文件记录
FTP可以利用系统的syslogd记录数据,这些数据包括用户历史使用命令与用户传输数据(传输时间、文件大小等),用户可以在/var/log/中获得各项日志信息。
限制用户的访问范围
FTP可以将用户的工作范围限定在用户主目录。用户通过FTP登录后系统显示的根目录就是用户主目录,这种环境被称为change root,简称chroot。这种方式可以限制用户只能访问主目录,而不允许访问/etc、/home、/usr/local等系统的重要目录,从而保护系统,使系统更安全。
FTP使用到的端口
FTP的正常工作需要使用到多个网络端口,服务器端会使用到的端口主要有:
命令通道,默认端口为21
数据通道,默认端口为20
两者的连接发起端不同,端口21主要接收来自客户端的连接,端口20则是FTP服务器主动连接至客户端。
vsftpd是一个开源的FTP服务器软件,它是“非常安全的FTP守护进程”的缩写。它具有快速、安全、高效的特点,支持IPv6、SSL、TLS加密协议,可以大幅度地提高FTP服务器的安全性。vsftpd软件具有安装方便、性能可靠、系统资源占用低等特点,广泛应用于各种服务器环境。由于其安全性和性能方面的优势,vsftpd已成为Linux服务器上常见的FTP服务器软件之一。
下载离线安装文件
mkdir -p /home/rpm/tools/vsftpd
cd /home/rpm/tools/vsftpd
dnf download --resolve vsftpd
mkdir -p /home/rpm/tools/ftp
cd /home/rpm/tools/ftp
dnf download --resolve ftp
在目标机安装
# 安装vsftpd
cd /home/rpm/tools/vsftpd
rpm -ivh --nosignature *.rpm
# 安装ftp
cd /home/rpm/tools/ftp
rpm -ivh --nosignature *.rpm
配置FTP
添加常用加密方法
OpenSSH_8.8p1版本(8.x或者更新)对接jsch1.55版本会出现Algorithm negotiation fail,原因是新版本的openssh取消了一些加密方法ssh-rsa,ssh-dss,解决方案是在服务器上修改sshd_config文件,增加这两个方法。
# 备份 sshd_config
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
vi /etc/ssh/sshd_config
# 找到
HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512
PubkeyAcceptedKeyTypes ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512
# 分别增加,ssh-rsa,ssh-dss
修改后如下:
HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,ssh-rsa,ssh-dss
PubkeyAcceptedKeyTypes ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-512,ssh-rsa,ssh-dss
保存退出,重启sshd服务
systemctl restart sshd
查看配置文件
vsftp自带的配置文件可以不用修改
cat /etc/vsftpd/vsftpd.conf | grep -v "#"
## 内容如下:
anonymous_enable=