如何在Linux上安装FTP服务器

FTP是 "文件传输协议 "的缩写,是在客户端和服务器之间传输文件的一种有效方式。在某些情况下,FTP就足够了,但对于通过互联网的连接,建议使用SFTP。

在本教程中,我们将逐步介绍如何在Linux系统上建立一个FTP服务器。我们还将看到如何通过各种设置来配置FTP服务器,然后如何使用命令行、GNOME GUI或FTP客户端软件来连接到FTP服务器。

目录要求
系统任意linux发行版
软件vsftpd
其它以root身份或通过sudo命令对你的Linux系统进行特权访问。
说明#- 要求给定的Linux命令以root权限执行,可以直接以root用户身份或使用sudo命令。
$ - 要求给定的Linux命令以普通非特权用户的身份执行。
软件要求和Linux的命令行

一、如何在Linux上安装vsftpd

vsftpd(非常安全传输的 FTP)是 Linux 下最好和最流行的 FTP 服务器之一。其他的也存在,但vsftpd是我们推荐使用的。你可以使用下面适当的命令,用你系统的软件包管理器安装vsftpd。

安装vsftpd
安装vsftpd

要在Ubuntu、Debian、Linux Mint、UOS、deep上安装vsftpd。

$ sudo apt install vsftpd

要在Fedora、CentOS、AlmaLinux和Red Hat上安装vsftpd。

$ sudo dnf install vsftpd 

要在Arch Linux和Manjaro上安装vsftpd。

$ sudo pacman -S vsftpd 

二、配置 vsftpd服务器

安装完成后,我们将进行基本配置,使FTP服务器启动和运行。

(一)建议保留一份原始配置文件的备份,以备以后出错。让我们重新命名默认的配置文件开始。

$ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_orig 

(二)使用 nano 或你喜欢的任何文本编辑器创建一个新的 vsftpd 配置文件。

$ sudo nano /etc/vsftpd.conf 

(三)将以下基本配置复制到你的文件中。这个配置对于一个基本的FTP服务器来说已经足够了,以后可以根据你的环境的具体需要进行调整。

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100
allow_writeable_chroot=YES

在新创建的/etc/vsftpd.conf文件中加入上述几行,然后保存修改并关闭该文件。

(4)你的Linux防火墙目前可能被配置为阻止对FTP的连接,但为你的发行版执行以下适当的命令将创建一个例外以允许流量。在Ubuntu和使用ufw(uncomplicated firewall)的系统上。

$ sudo ufw allow from any to any port 20,21 proto tcp 

在基于RHEL的发行版或任何其他使用Firewalld的发行版上。

$ sudo firewall-cmd --zone=public --permanent --add-service=ftp

如果你只是使用iptables而没有使用防火墙前端。

$ sudo iptables -A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 20,21 -j ACCEPT

(5)在保存了配置文件并更新了防火墙规则之后,重新启动 vsftpd 以生效。

$ sudo systemctl restart vsftpd

三、建立一个FTP 账户

FTP服务器已配置好了,所以现在是时候创建一个新的用户账户,我们将用它来连接到FTP服务。

(1)使用这第一条命令创建一个名为ftpuser的新账户,第二条命令为该账户设置密码。

$ sudo useradd -m ftpuser 
$ sudo passwd ftpuser 
New password:  
Retype new password:  
passwd: password updated successfully 

为了验证一切工作是否正常,你应该在ftpuser的主目录中至少存储一个文件。当我们在接下来的步骤中登录到FTP时,这个文件应该是可见的。

$ sudo bash -c "echo FTP TESTING > /home/ftpuser/FTP-TEST" 

四、通过命令行连接到FTP服务器

(1)现在你应该能够通过IP地址或主机名连接到你的FTP服务器。要从命令行连接并验证一切是否正常,请打开终端,使用ftp命令连接到你的回环地址(127.0.0.1)。

$ ftp 127.0.0.1

(2)正如你在上面的截图中看到的,我们能够通过指定我们先前配置的用户名和密码登录到FTP服务器。接下来,让我们试着发出ls命令,它应该会列出我们在前面步骤中创建的测试文件。

ftp> ls
列出我们的测试文件,确保我们可以查看FTP服务器的内容
列出我们的测试文件,确保我们可以查看FTP服务器的内容

如果你的输出应该像上面的截图一样,表明登录成功,并显示出我们先前创建的测试文件的ls命令。

五、通过图形化工具连接到FTP服务器

大多数桌面环境都有一个内置的方法来连接到FTP服务器。即使你的环境没有,也有很多免费的FTP客户端可供Linux使用。在下面的说明中,我们将使用Ubuntu上的GNOME桌面环境来连接到FTP服务器。如果你正在运行其他的GUI,在你的文件管理器中寻找连接到外部服务器的选项--从那里,说明应该和下面一样。

(1)在你的文件管理器中,点击 "其他位置"(如果不使用GNOME,可能叫法不同),在窗口底部的 "连接到服务器 "框中输入ftp://127.0.0.1,点击连接。

通过GNOME文件管理器连接到FTP服务器
通过GNOME文件管理器连接到FTP服务器

(2)选择 "注册用户",然后输入我们之前设置的FTP账户的用户名和密码,点击连接。

(3)连接成功后,你将看到你先前创建的测试文件。你现在可以下载并查看这个文件,或将你自己的内容上传到该目录。

六、允许匿名访问vsftpd

到目前为止,我们已经看到如何创建可以访问FTP服务器的新用户。如果你希望其他人能够访问你的FTP服务器而不需要给出用户名和密码,你可以配置匿名认证。按照下面的步骤来设置它。

$ sudo nano /etc/vsftpd.conf

接下来,寻找anonymous_enable=NO行,并将设置改为YES。接下来,寻找anonymous_enable=NO行,并将设置改为YES。

anonymous_enable=YES

完成后,在保存新的修改时退出这个文件,然后重新启动 vsftpd 服务以使修改生效。

$ sudo systemctl restart vsftpd

要测试匿名登录,发出ftp 127.0.0.1命令,使用anonymous作为你的用户名,并使用一个空白密码。你应该收到一个230登录成功的消息,如下面的截图所示。

以匿名身份登录FTP服务器
以匿名身份登录FTP服务器

七、改变默认的FTP端口号

默认情况下,FTP协议对用户认证采用21端口监听,对数据传输采用20端口监听。然而,我们可以通过对 /etc/vsftpd.conf 文件进行小小的编辑来改变这一行为。在文件的底部,使用 listen_port 指令为 vsftpd 指定一个不同的端口来使用。例如,添加以下一行将指示 vsftpd 监听 2121 端口。

listen_port=2121

在本教程中,我们看到如何通过vsftpd在Linux系统上建立一个FTP服务器。我们还学习了如何使用命令行或GUI作为FTP客户端来连接到服务器。当运行一个FTP服务器时,本地网络上的计算机可以通过命令行或他们喜欢的FTP客户端访问你的系统以存储和检索文件。

本文翻译自:https://linuxconfig.org/setup-ftp-server-on-linux

THE END
打赏
海报
如何在Linux上安装FTP服务器
内容 隐藏 1 一、如何在Linux上安装vsftpd 2 ……
<<上一篇
下一篇>>