如何在 Rocky Linux 上安装 sFTPGo
sFTPGo 是一个高度可配置的 SFTP 服务器,具有额外的安全协议,例如 HTTP/S、FTP/S 和 WebDAV 支持。它允许您创建具有多个后端的 FTP 服务器,例如本地文件系统和第三方存储提供商(例如 Amazon S3、Google Storage Engine 和 Azure Blog Storage)。
FTP 提供了一种通过多种协议发送和接收文件的安全方法。它支持虚拟文件夹,支持 SQLite、MariaDB 和 PostgreSQL 等数据库后端,提供 REST API,支持双因素身份验证等等。
在本教程中,我们将在 Rocky Linux 服务器上使用现代 FTP 服务器软件 sFTPGo 创建一个安全的 FTP 服务器。您还将了解如何在 sFTPGo 上启用 Webdav。
先决条件
您需要满足以下要求才能完成本教程:
- Rocky Linux 服务器 - 您可以使用 Rocky Linux v8 或 v9。
- 启用了 sudo/root 权限的非 root 用户。
- 域名指向服务器IP地址——特别适合生产。
安装 sFTPGo
sFTPGo 是一款功能齐全的现代 FTP 服务器软件,支持多种安全协议,例如 FTP/S、Webdav 和 HTTP/S。它还支持多个后端数据库,包括 PostgreSQL、MySQL 和 SQLite(默认)。
sFTPGo 还可以与多个后端集成,为用户提供文件服务,包括本地文件系统(可以加密)、云存储服务,例如 Google Cloud Storage、Azure Blob Storage 和 Amazon S3。
有多种方法可以将 sFTPGo 安装到 Rocky Linux 服务器。您可以选择适合您的部署的一种。
通过DNF安装
sFTPGo 为多个 Linux 发行版提供存储库,包括 Debian、Ubuntu、CentOS/RockyLinux/AlmaLinux。
在 Rocky Linux 上,您可以通过 DNF 包管理器安装 sFTPGo。
运行以下命令将 sFTPGo 存储库添加到您的 Rocky Linux 服务器。
ARCH=`uname -m`
curl -sS https://ftp.osuosl.org/pub/sftpgo/yum/${ARCH}/sftpgo.repo | sudo tee /etc/yum.repos.d/sftpgo.repo
现在,通过下面的 dnf 命令更新并刷新您的软件包存储库。
sudo dnf update
安装软件包更新后,运行下面的 dnf 命令来安装 sFTPGo 软件包。
sudo dnf install sftpgo
当提示确认安装时,输入 Y 并按 ENTER 继续。
此外,如果您收到接受 sFTPGo 存储库的 GPG 密钥的提示,请再次输入 y。
sFTPGo安装完成后,运行以下命令启动并启用“sftpgo”服务。这将运行 sFTPGo 服务并使其在系统启动时自动运行。
sudo systemctl start sftpgo
sudo systemctl enable sftpgo
最后,运行以下systemctl命令来验证sFTPGo服务。如果安装成功,您将看到 FTP 服务正在运行。
sudo systemctl status sftpgo
通过 RPM 安装
将 sFTPGo 安装到 Rocky Linux 服务器的另一种方法是从 GitHub 存储库下载 sFTPGo 的 RPM 包并通过 RPM 命令安装。
sFTPGo为Debian/Ubuntu用户提供了二进制包.deb,为CentOS/RockyLinux用户提供了二进制包.rpm。
通过下面的 wget 命令下载 sFTPGo rpm 文件。 “VER”变量是 sFTPGo 软件包的最新版本。
在撰写本文时,sFTPGo 的最新版本是 v2.3.5。因此您应该会看到新文件“sftpgo-2.3.5-1.x86_64.rpm “在您当前的工作目录中。
VER=$(curl -s https://api.github.com/repos/drakkan/sftpgo/releases/latest|grep tag_name | cut -d '"' -f 4 |sed 's/v//g')
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.x86_64.rpm
下载sFTPGo后,运行以下命令安装RPM文件“sftpgo-2.3.5-1.x86_64.rpm”。
sudo rpm -Uvh sftpgo-2.3.5-1.x86_64.rpm
安装完成后,您将看到如下输出:
接下来,运行下面的 systemctl 命令来启动并启用 sFTPGo 服务。该服务应该正在运行,并且将在系统启动期间自动执行。
sudo systemctl enable sftpgo
sudo systemctl start sftpdgo
现在通过下面的 systemcyl 命令验证 sFTPGo 服务。您应该看到 sFTPGo 服务正在 Rocky Linux 系统上运行。
sudo systemctl status sftpdgo
设置Firewalld
sFTPGo是一款可以使用多种协议的FTP服务器软件。这种灵活性允许客户使用他们喜欢的应用程序来访问他们的文件。
客户端可以通过 FileZilla 等 FTP 客户端访问文件,或者通过安全 HTTP/HTTPS 协议使用 Web 浏览器,或者使用 Webdav 协议的文件管理器访问文件。
以下是您需要打开以供客户端和管理员访问的一些 sFTPGo 端口。
Protocol Port Access via
-----------------------------------
TCP 8080 HTTP/HTTPS
TCP 2022 SFTP
TCP 8090 Webdav
运行以下firewall-cmd命令将sFTPGo端口添加到firewalld。
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --permanent --add-port=2022/tcp
现在使用以下命令重新加载防火墙规则。
sudo firewall-cmd --reload
最后,验证 sFTPGo 端口并确保端口已添加。
sudo firewall-cmd --list-ports
您应该会看到 sFTPGo 的端口已添加。
设置 sFTPGo
安装 sFTPgo 并配置 Firewalld 后,您将设置 sFTPGo 安装。这包括启用 HTTP/HTTPS、SFTP 和 WebDAV 等协议。此外,sFTPGo 通过 SSL 证书进行保护。
在设置 sFTPGo 之前,请确保已准备好 SSL/TLS 证书。您可以使用 Letsencrypt 的免费 SSL。
使用 Nano 编辑器编辑默认 sFTPGo 配置文件“/etc/sftpgo/sftpgo.json”。
sudo nano /etc/sftpgo/sftpgo.json
sFTPGo 默认启用 SFTP,它将在 TCP 端口 2022 上运行。
移至“webdavd”选项并输入端口“8090”,启用HTTP,然后输入SSL证书的路径。此外,您还可以使用您的内部 IP 地址更改 webdavd 协议的 IP 地址。
"webdavd": {
"bindings": [
{
"port": 8090,
"address": "",
"enable_https": true,
"certificate_file": "/etc/letsencryt/live/sftp.hwdomain.io/fullchain.pem",
"certificate_key_file": "/etc/letsencryt/live/sftp.hwdomain.io/privkey.pem",
"min_tls_version": 12,
"client_auth_type": 0,
"tls_cipher_suites": [],
"prefix": "",
"proxy_allowed": [],
"client_ip_proxy_header": "",
"client_ip_header_depth": 0
}
],
接下来,移至“httpd”选项并启用安全 HTTPS 支持,然后输入 SSL 证书的路径。如果您有多个 IP 地址,您还可以指定“httpd”选项的 IP 地址。
"httpd": {
"bindings": [
{
"port": 8080,
"address": "",
"enable_web_admin": true,
"enable_web_client": true,
"enabled_login_methods": 0,
"enable_https": true,
"certificate_file": "/etc/letsencryt/live/sftp.hwdomain.io/fullchain.pem",
"certificate_key_file": "/etc/letsencryt/live/sftp.hwdomain.io/privkey.pem",
"min_tls_version": 12,
"client_auth_type": 0,
"tls_cipher_suites": [],
"proxy_allowed": [],
"client_ip_proxy_header": "",
"client_ip_header_depth": 0,
"hide_login_url": 0,
"render_openapi": true,
"web_client_integrations": [],
完成后保存文件并退出编辑器。
最后,通过下面的 systemctl 命令重新启动 sFTPGo 服务以应用新的更改。
sudo systemctl restart sftpgo
您现在已经在 Rocky Linux 服务器上启动并运行了 sFTPGo。并且您已经为客户端启用了多种协议,其中包括SFTP(默认启用)、WebDAV和httpd。所有这些协议也通过 SSL 证书进行保护。
设置 sFTPGo 用户
完成 sFTPGo 安装后,您必须通过在默认端口 8080 上运行的“httpd”协议设置管理员用户。此外,您还可以通过管理仪表板在 sFTPGo 中创建一个新用户。
打开网络浏览器并访问 sFTPGo 安装的 URL 域名(即:https://sftp.hwdomain.io"8080/)。
在第一个屏幕上,系统会要求您为 sFTPGo 创建一个新的管理员用户。输入详细的管理员用户名和密码,然后点击“创建管理员n”。
现在您应该看到 sFTPGo 的管理仪表板。
接下来,您将为 sFTPGo 用户创建一个新组。
点击左侧的“群组”菜单,然后输入新的群组名称和描述,然后点击“提交”。在此示例中,您将创建一个新群组名为“manager”的组,您还可以添加其他配置,例如 ACL(访问控制列表)并为每个组设置特定的磁盘配额和带宽。
创建群组后,点击左侧的“用户”菜单即可创建新用户。
输入详细的用户名和密码以及组,然后单击“提交”继续。在此示例中,您将创建一个新用户“alice”,其主要组为“manager”。
现在,您应该在 sFTPGo 管理仪表板上看到用户列表。
现在您已经创建了一个 sFTPGo 用户。接下来,了解用户如何通过多个客户端访问或上传文件到 sFTPGo,其中包括 sFTPGo WebClient(通过 httpd)、FileZilla(通过 SFTP)或使用文件管理器(通过 Webdav)。
通过 SFTP 和 FileZilla 连接
在第一个示例中,您将学习如何作为客户端通过 FileZilla 和 SFTP 协议连接到 sFTPGo 服务器。因此,在开始之前,请确保本地计算机上安装了 FTP 客户端 FileZilla。
现在打开 FileZilla 应用程序,单击“文件”菜单并选择“站点管理器” - 或者您也可以按“Ctrl+S” 。
点击“新建站点”并输入详细用户名、密码以及SFTP服务器IP地址或域名和端口。
- 协议:SFTP - SSH 文件传输协议
- 主机:sftp.hwdomain.io
- 端口:2022
- 登录类型:正常
- 用户: 爱丽丝
- 密码:您的密码
单击“连接”确认并连接到 SFTP 服务器。
现在系统将提示您确认 SFTP 服务器的证书,单击“确定”进行确认。
通过 SFTP 协议连接后,您可以尝试将文件上传到 sFTPGo 服务器。下面的示例显示 ISO 文件通过 FileZilla 客户端上传到 sFTPGo 服务器。
通过 sFTPGo WebClient 访问
默认情况下,sFTPGo 通过在“httpd”端口 8080 上运行的 WebClient 为客户端提供访问权限。使用 sFTPGo WebClient,您可以上传和管理文件、设置额外的两因素身份验证以及在 sFTPGo 服务器内的用户之间共享文件。
打开 Web 浏览器并使用 httpd 端口“8080”和如下路径访问 sFTPGo 安装的域名(即:https://sftp.hwdomain.io:8080/web/client/登录)。您应该获得客户端访问的登录页面。
输入用户名“alice”和密码,然后单击“登录”。
如果用户名和密码正确,您应该会看到 sFTPGo 用户仪表板。另外,您还可以看到之前通过 FileZilla 和 SFTP 刚刚上传的 ISO 文件。
您还可以通过 WebClient 上传文件并添加额外的两因素身份验证或通过 sFTPGo WebClient 与其他用户共享文件。
通过 Webdav 连接到 sFTPGo
要通过 WebDAV 协议进行连接,您可以使用计算机上的文件管理器。对于 Windows,您可以使用 File Explored;对于 Linux 用户,您可以使用 Nautilus、Thunar 或 Dolphin,对于 macOS 用户,您可以使用官方文件管理器。
您可以使用正在使用的文件管理器上的 WebDAV 地址,例如“davs://sftp.hwdomain.io:8090/”。 “davs”是“dav”Webdav 协议的安全版本。
现在系统将提示您输入用户名和密码。输入用户 alice 和您的密码,然后单击“连接”。
连接后,您应该会看到 Webdav 协议已添加到“网络”部分。在本例中,您可以看到通过SFTP协议和FileZilla上传的ISO文件。
结论
在本教程中,您已经在 Rocky Linux 服务器上使用 sFTPGo 设置了一个现代且安全的 FTP 服务器。您还为 sFTPGo 配置了多种协议:SFTP、httpd 和 Webdav,并启用了安全连接。
在本教程结束时,您还学习了如何通过多个客户端应用程序连接到 sFTPGo 服务器、使用具有 SFTP 协议的 FileZilla、使用具有安全 HTTPS 连接的 sFTPGo WebClient 以及使用具有 Webdav/s 的文件管理器。