本教程介绍如何在Raspberry PI上安装和配置FTP服务器,以便在设备之间共享文件。我们将使用vsftpd,它是一个稳定、安全、快速的FTP服务器。我们还将向您展示如何配置vsftpd以限制用户访问其主目录,并使用SSL/TLS对整个传输进行加密。
对于这个项目,您应该在您的Raspberry PI上安装Raspbian。运行FTP服务器不需要图形界面,因此我们建议使用Raspbian Lite映像并启用SSH。
标准Raspbian存储库中提供了vsftpd包。要安装它,请运行以下命令:
安装过程完成后,ftp服务将自动启动。要进行验证,请打印服务状态:
输出将如下所示,显示vsftpd服务处于活动状态且正在运行:
Vsftpd.service-vsftpd FTP服务器已加载:已加载(/lib/systemd/system/vsftpd.service;已启用;供应商预设:已启用)活动:活动(正在运行)自WED 2020-10-21 19:00:41 BST;9秒前...。
大多数设置都在配置文件中进行了很好的记录。有关所有可用选项,请访问vsftpd官方页面。
要确保只有本地用户可以访问FTP服务器,请搜索ANNOWARY_ENABLE和LOCAL_ENABLE指令,并验证您的配置是否与以下行匹配:
找到并取消对WRITE_ENABLE指令的注释,以允许对文件系统进行更改,如上载和删除文件。
要防止FTP用户访问其主目录之外的文件,请取消对chroot指令的注释。
当chroot功能激活时,如果用户锁定的目录是可写的,vsftpd将拒绝上传文件。
方法1.-允许上传的推荐选项是保持启用chroot并配置FTP目录。在本例中,我们将在用户主目录中创建一个ftp目录,该目录将用作chroot目录和一个用于上传文件的可写上载目录。
方法2.-另一个选项是在vsftpd配置文件中添加以下指令。如果必须授予用户对其主目录的可写访问权限,请使用此选项。
默认情况下,vsftpd使用活动模式。要使用被动模式,请设置端口的最小和最大范围:
Vsftpd可以使用任何端口进行被动FTP连接。启用被动模式后,FTP客户端将在您选择的范围内的随机端口上打开到服务器的连接。
您可以将vsftpd配置为仅允许某些用户登录。要执行此操作,请在文件末尾添加以下行:
启用此功能后,您需要通过将用户名添加到/etc/vsftpd.user_list文件(每行一个用户)来显式指定哪些用户可以登录。
要使用SSL/TLS加密FTP传输,您需要拥有SSL证书并配置FTP服务器以使用它。
您可以使用由可信证书颁发机构签名的现有SSL证书,也可以创建自签名证书。
如果你有一个指向FTP服务器IP地址的域或子域,你可以很容易地生成一个免费的让我们加密SSL证书。
运行以下命令以创建有效期为10年的2048位私钥和自签名证书。私钥和证书将保存在同一文件中:
找到rsa_cert_file和rsa_private_key_file指令,将它们的值更改为pam文件路径,并将ssl_enable指令设置为yes:
如果未另行指定,FTP服务器将仅使用TLS进行安全连接。
配置完服务器后,vsftpd配置文件(不包括注释)应该如下所示:
如果您运行的是UFW防火墙,则需要允许FTP通信。
要打开端口21(ftp命令端口)、端口20(ftp数据端口)和30000-31000(被动端口范围),请运行以下命令:
如果您已经有要授予FTP访问权限的用户,请跳过第一步。
正如上一节所讨论的,用户将能够将文件上传到ftp/pload目录。
此时,您的FTP服务器已经完全正常运行,您应该能够使用任何FTP客户端(如FileZilla)连接到您的服务器。
默认情况下,在创建用户时,如果未明确指定,用户将拥有对设备的SSH访问权限。要禁用shell访问,请创建一个新的shell,它将简单地打印一条消息,告诉用户他们的帐户仅限于FTP访问。
Echo-e&39;#!/bin/sh\necho";此帐户仅限于FTP访问。";';|sudo tee-a/bin/ftponly sudo chmod a+x/bin/ftponly。
使用相同的命令更改您希望仅授予FTP访问权限的所有用户的shell。
我们已经向您展示了如何在Raspberry PI系统上安装和配置安全快速的FTP服务器。