如何在Linux上安装FTP服务器
FTP是 "文件传输协议 "的缩写,是在客户端和服务器之间传输文件的一种有效方式。在某些情况下,FTP就足够了,但对于通过互联网的连接,建议使用SFTP。
在本教程中,我们将逐步介绍如何在Linux系统上建立一个FTP服务器。我们还将看到如何通过各种设置来配置FTP服务器,然后如何使用命令行、GNOME GUI或FTP客户端软件来连接到FTP服务器。
目录 | 要求 |
系统 | 任意linux发行版 |
软件 | vsftpd |
其它 | 以root身份或通过sudo命令对你的Linux系统进行特权访问。 |
说明 | #- 要求给定的Linux命令以root权限执行,可以直接以root用户身份或使用sudo命令。 $ - 要求给定的Linux命令以普通非特权用户的身份执行。 |
一、如何在Linux上安装vsftpd
vsftpd(非常安全传输的 FTP)是 Linux 下最好和最流行的 FTP 服务器之一。其他的也存在,但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
如果你的输出应该像上面的截图一样,表明登录成功,并显示出我们先前创建的测试文件的ls命令。
五、通过图形化工具连接到FTP服务器
大多数桌面环境都有一个内置的方法来连接到FTP服务器。即使你的环境没有,也有很多免费的FTP客户端可供Linux使用。在下面的说明中,我们将使用Ubuntu上的GNOME桌面环境来连接到FTP服务器。如果你正在运行其他的GUI,在你的文件管理器中寻找连接到外部服务器的选项--从那里,说明应该和下面一样。
(1)在你的文件管理器中,点击 "其他位置"(如果不使用GNOME,可能叫法不同),在窗口底部的 "连接到服务器 "框中输入ftp://127.0.0.1,点击连接。
(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协议对用户认证采用21端口监听,对数据传输采用20端口监听。然而,我们可以通过对 /etc/vsftpd.conf 文件进行小小的编辑来改变这一行为。在文件的底部,使用 listen_port 指令为 vsftpd 指定一个不同的端口来使用。例如,添加以下一行将指示 vsftpd 监听 2121 端口。
listen_port=2121
在本教程中,我们看到如何通过vsftpd在Linux系统上建立一个FTP服务器。我们还学习了如何使用命令行或GUI作为FTP客户端来连接到服务器。当运行一个FTP服务器时,本地网络上的计算机可以通过命令行或他们喜欢的FTP客户端访问你的系统以存储和检索文件。
共有 0 条评论