如何在 Ubuntu Linux 中设置和使用 FTP 服务器
FTP 代表“文件传输协议”,是从远程或本地服务器下载文件或将文件上传到服务器的绝佳协议。正确设置后,使用 FTP 被证明是一项非常基本的任务。它的工作原理是让服务器监听来自客户端的连接(默认在端口 21 上)。客户端可以使用其用户帐户访问远程目录,然后根据授予的权限下载或上传文件。还可以配置匿名授权,这意味着用户不需要自己的帐户即可连接到 FTP 服务器。
在 Ubuntu Linux 上,有多种不同的 FTP 服务器和客户端软件包可用。您甚至可以使用默认的 GUI 和命令行工具作为 FTP 客户端。 vsftpd 是一个非常流行且高度可配置的 FTP 服务器软件包,可用于许多 Linux 系统,包括 Ubuntu。
在本指南中,我们将逐步介绍在 Ubuntu 上安装 vsftpd 的说明。我们还将了解如何通过各种设置来配置 FTP 服务器,然后如何使用命令行、GNOME GUI 或 FTP 客户端软件连接到 FTP 服务器。
警告
FTP 在某些情况下就足够了,但对于通过互联网的连接,建议使用 SFTP。这是因为通过 Internet 连接使用 FTP 并不安全,因为您的凭据和数据的传输没有加密。 SFTP 中的“S”代表“安全”,通过 SSH 传输 FTP 协议,提供建立安全连接所需的加密。要了解有关 SFTP 的更多信息,请参阅我们的如何使用 SFTP 安全传输文件指南。
在本教程中您将学习:
如何在 Ubuntu 上安装和配置 vsftpd
如何设置 FTP 用户帐户
如何通过命令行连接FTP服务器
如何通过 GUI 连接到 FTP 服务器
如何配置匿名FTP登录
如何更改默认FTP监听端口
解决“连接被拒绝”FTP 连接错误
在 Ubuntu Linux 上连接到 FTP 服务器
vsftpd安装
在终端中输入以下命令,在 Ubuntu 系统上安装 vsftpd:
$ sudo apt install vsftpd
配置vsftpd服务器
最好的做法是保留原始配置文件的备份副本,以防以后出现问题。让我们重命名默认配置文件:
$ 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
文件中,然后保存更改并关闭该文件。Ubuntu 的内置防火墙默认会阻止 FTP 流量,但以下命令将在 UFW 中创建例外以允许流量:
$ sudo ufw allow from any to any port 20,21,10000:10100 proto tcp
保存配置文件并更新防火墙规则后,重新启动 vsftpd 以应用新更改:
$ sudo systemctl restart vsftpd
vsftpd 配置文件
创建FTP用户
我们的 FTP 服务器已准备好接收传入连接,因此现在是时候创建一个新的用户帐户,我们将用它来连接到 FTP 服务。
使用第一个命令创建一个名为 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服务器
您现在应该能够通过 IP 地址或主机名连接到 FTP 服务器。首先,通过运行以下命令确保系统上安装了默认的 FTP 客户端实用程序。它会安装该软件或告诉您该软件已存在于系统中。
$ sudo apt install ftp
要从命令行连接并验证一切正常,请打开终端并使用 Ubuntu 的 ftp 命令连接到您的环回地址 (127.0.0.1)。
$ ftp 127.0.0.1
通过命令行连接到FTP服务器
正如您在上面的屏幕截图中看到的,我们可以通过指定之前配置的用户名和密码来登录 FTP 服务器。接下来,让我们尝试发出 ls
命令,该命令应列出我们在前面的步骤中创建的测试文件。
ftp> ls
列出我们的测试文件以确保我们可以查看 FTP 服务器的内容
您的输出应如上面的屏幕截图所示,表明登录成功,并且 ls 命令显示了我们之前创建的测试文件。
通过 GNOME GUI 连接到 FTP 服务器
如果您愿意,还可以通过 GUI 连接到 FTP 服务器。 FTP 客户端有很多选项,但 Ubuntu 上的默认 GNOME GUI 已经具备从文件管理器连接到 FTP 服务器的功能。以下是如何使用它连接到 FTP 服务器。
从“活动”菜单或快速启动栏中打开文件管理器。
单击“其他位置”,然后在窗口底部的“连接到服务器”框中输入
ftp://127.0.0.1
,然后单击连接。选择“注册用户”,然后输入我们之前设置的 FTP 帐户凭据,然后单击“连接”。
连接成功后,您将看到之前创建的测试文件。您现在可以下载并查看此文件,或将您自己的内容上传到该目录。
通过 GNOME 文件管理器连接到 FTP 服务器
输入我们的 FTP 用户凭据
成功连接到FTP服务器,显示我们的测试文件
允许在 vsftpd 中匿名访问
到目前为止,我们已经了解了如何创建可以访问 FTP 服务器的新用户。如果您希望其他人无需提供用户名和密码即可访问您的 FTP 服务器,您可以配置匿名身份验证。请按照以下步骤进行设置。
首先,我们需要编辑
/etc/vsftpd.conf
文件,因此使用 nano 或任何其他文本编辑器打开它。$ sudo nano /etc/vsftpd.conf
接下来,查找
anonymous_enable=NO
行,并将设置更改为YES
。anonymous_enable=YES
完成后,退出此文件并保存新更改,然后重新启动 vsftpd 服务以使更改生效。
$ sudo systemctl restart vsftpd
要测试匿名登录,请发出
ftp 127.0.0.1
命令,使用anonymous
作为您的用户名,并使用空白密码。您应该会收到230 Login success
消息,如下面的屏幕截图所示。
以匿名方式登录FTP服务器
更改默认 FTP 端口号
默认情况下,FTP 协议侦听端口 21 以进行用户身份验证,并侦听端口 20 以进行数据传输。但是,我们可以通过对 /etc/vsftpd.conf
文件进行少量编辑来更改此行为。在文件底部,使用 listen_port
指令指定 vsftpd 使用的不同端口。例如,添加以下行将指示 vsftpd 侦听端口 2121:
listen_port=2121
结束语
在本指南中,我们了解了如何使用 vsftpd 软件包在 Ubuntu Linux 上创建 FTP 服务器。我们还学习了如何使用命令行或 GNOME GUI 作为 FTP 客户端连接到服务器。通过遵循本指南,本地网络上的计算机可以通过命令行或其首选 FTP 客户端访问您的系统以存储和检索文件。
故障排除
您可能收到的最常见错误是尝试连接到服务器时出现“连接被拒绝”消息。这可能有多种原因,但通常与防火墙阻止连接或 vstpd 文件配置错误有关。执行以下命令,确保 FTP 端口未被防火墙阻止:
$ sudo ufw allow from any to any port 20,21,10000:10100 proto tcp
另请检查 vsftpd 服务的状态,以确保它正在运行并且没有遇到任何启动错误。
$ systemctl status vsftpd
检查 vsftpd 服务的状态
使用以下命令启动 vsftpd,或在应用配置更改后重新启动服务。
$ sudo systemctl start vsftpd
OR
$ sudo systemctl restart vsftpd
最后,请记住,路由器或外部防火墙也可能负责阻止您的连接。如果您能够在服务器本身上使用 ftp 127.0.0.1
命令成功连接到 FTP 服务器,并且已按照上述故障排除步骤进行操作,但无法从远程系统,那么两个系统之间可能存在某些设备阻止连接。