更新时间:2023-02-12 16:15:53浏览次数:710+次
本文介绍如何在Linux系统上安装SFTPGo的方法。
针对Ubuntu发行版,使用PPA安装SFTPGo
有一个PPA提供了当前支持的SFTPGo版本。此PPA可以添加到您的Ubuntu系统。
首先更新APT包索引:
sudo apt update
然后安装所需的软件包依赖项:
sudo apt install software-properties-common
现在添加SFTPGo PPA:
sudo add-apt-repository ppa:sftpgo/sftpgo
sudo apt-get update
添加PPA后,可以使用以下命令在Ubuntu上安装SFTPGo:
sudo apt install sftpgo
依赖关系树:
The following NEW packages will be installed:
sftpgo
0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded.
Need to get 9,871 kB of archives.
After this operation, 41.0 MB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/sftpgo/sftpgo/ubuntu focal/main amd64 sftpgo amd64 2.2.2-1ppa1 [9,871 kB]
Fetched 9,871 kB in 0s (30.9 MB/s)
Selecting previously unselected package sftpgo.
安装成功后,服务将自动启动,验证状态如下:
$ systemctl status sftpgo
sftpgo.service - SFTPGo Server
使用.RPM和.DEB包安装SFTPGo
每个版本都有为SFTPGo构建的DEB和RPM包。这些软件包可以在SFTPGo Github发布页面上找到,地址在https://github.com/drakkan/sftpgo/releases。
首先将最新版本保存在变量中:
VER=$(curl -s https://api.github.com/repos/drakkan/sftpgo/releases/latest|grep tag_name | cut -d '"' -f 4 |sed 's/v//g')
下载适合您系统的软件包,如下所示:
1]、在Debian/Ubuntu上
##For AMD64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo_$VER-1_amd64.deb
##For ARM64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo_$VER-1_arm64.deb
##For PPC64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo_$VER-1_ppc64el.deb
2]、在RHEL/CentOS/Rocky Linux/Alma Linux上
##For x86_64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.x86_64.rpm
##For ARMV7Hl##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.armv7hl.rpm
##For PPC64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.ppc64le.rpm
##For AARCH64##
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.aarch64.rpm
下载正确的软件包后,按以下步骤继续安装:
##在Debian/Ubuntu上##
sudo apt install ./sftpgo_$VER-1_*.deb
##在RHEL/CentOS/Rocky Linux/Alma Linux上##
sudo rpm -i sftpgo-$VER-1.*.rpm
安装后,启动并启用STPGo:
sudo systemctl enable --now sftpgo
检查服务状态:
$ systemctl status sftpgo
sftpgo.service - SFTPGo Server
现在通过如下指定端口来启用WebDAV:
$
"webdavd": {
"bindings": [
{
"port": 8090,
"address": "",
"enable_https": false,
"client_auth_type": 0,
"tls_cipher_suites": [],
"prefix": "",
"proxy_allowed": []
.....
下面将使用SSL/TLS保护SFTPGO。
安装后,您需要创建SSL/TLS证书以保护SFTPGo。对于本指南,我们将使用OpenSSL生成自签名证书,如下所示。
首先,确保安装了OpenSSL。
##在Debian/ubuntu上
sudo apt install openssl
##在RHEL/CentOS/Rocky Linux/Alma Linux上
sudo yum install openssl
安装后,颁发如下证书:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/sftpgo.pem -out /etc/sftpgo/sftpgo.pem
提供创建密钥所需的详细信息:
设置所需的权限:
sudo chmod 777 /etc/sftpgo/sftpgo.pem
sudo chmod 777 /etc/sftpgo.pem
创建后,将密钥添加到容器(docker)。在正常安装时,编辑JSON文件,如下所示:
sudo vim /etc/sftpgo/sftpgo.json
在文件中,启用HTTPS并添加证书:
"httpd": {
"bindings": [
{
........
"enable_https": true,
...
}
],
"templates_path": "/usr/share/sftpgo/templates",
"static_files_path": "/usr/share/sftpgo/static",
"openapi_path": "/usr/share/sftpgo/openapi",
"backups_path": "/srv/sftpgo/backups",
"web_root": "",
"certificate_file": "/etc/sftpgo/sftpgo.pem",
"certificate_key_file": "/etc/sftpgo.pem",
"ca_certificates": [],
....
保存文件并重新启动SFTPGo:
sudo systemctl restart sftpgo
使用Docker安装SFTPGo
docker Hub和GitHub容器注册表中也提供了SFTPGo docker映像。使用此方法,确保系统上安装了Docker。
您可以使用以下指南中的帮助来实现这一点:
如何在Ubuntu 22.04系统上安装Docker CE:https://www.hmxthome.com/linux/4941.html
安装后,使用以下语法运行SFTPGo容器:
docker run --name some-sftpgo -p 8080:8080 -p 2022:2022 -d drakkan/sftpgo
在命令中some-sftpgo是容器的名称,drakkan/sftpgo是要使用的特定sftpgo版本。
您也可以在启用FTP服务的情况下运行容器。请记住,这在默认情况下是禁用的,并通过如下启动实例来启用:
docker run --name some-sftpgo \
-p 8080:8080 \
-p 2022:2022 \
-p 2121:2121 \
-p 50000-50100:50000-50100 \
-e SFTPGO_FTPD__BINDINGS__0__PORT=2121 \
-e SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP=<your external ip here> \
-d drakkan/sftpgo
此时,FTP在端口2121和2022上可用。
下面启用WebDAV并设置数据持久性。
/my/own/sftpgodata是数据路径:
sudo mkdir -p /my/own/sftpgodata
sudo chown -R 1000:1000 /my/own/sftpgodata
/my/own/sftpgohome作为conatiner的主目录:
sudo mkdir /my/own/sftpgohome
sudo chown -R 1000:1000 /my/own/sftpgohome
现在按如下所示运行容器:
docker run --name some-sftpgo \
-p 8080:8080 \
-p 2022:2022 \
-p 8090:8090 \
--mount type=bind,source=/my/own/sftpgodata,target=/srv/sftpgo \
--mount type=bind,source=/my/own/sftpgohome,target=/var/lib/sftpgo \
-e SFTPGO_WEBDAVD__BINDINGS__0__PORT=8090 \
-d drakkan/sftpgo
检查容器的状态:
$ docker ps
bc98cb37b837 drakkan/sftpgo "sftpgo serve" 6 seconds ago Up 4 seconds 0.0.0.0:2022->2022/tcp, :::2022->2022/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp some-sftpgo
访问SFTPGO web管理UI及使用SFTP客户端(FileZilla)测试SFTP
启用HTTPS后,我们可以使用URL通过web访问SFTPGO,地址格式为https://IP_address:8080或者http://IP_address:8080,但首先,确保允许必要的端口通过防火墙:
##For UFW
sudo ufw allow 8080
sudo ufw allow 2022
sudo ufw allow 8090
#For 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创建用户和密码,然后就可以登陆到控制面板中了:
使用所需的用户名、密码创建用于连接到SFTPGo的用户,如果需要,还可以添加公钥。
下面将使用SFTP客户端(FileZilla)测试SFTP。
首先安装SFTP客户端包(FileZilla):
$ sudo apt install filezilla #[On Debian, Ubuntu & Mint]
$ sudo yum install filezilla #[On RHEL/CentOS/Fedora & Rocky Linux/AlmaLinux]
$ sudo pacman -S filezilla #[On Arch Linux]
$ sudo zypper in filezilla #[On OpenSUSE]
现在启动它并在文件-站点管理器下配置通信:
如上所述创建新的SFTP连接。单击连接,并信任指纹。现在,新连接将显示如下。左边是本地机器,右边是SFTP服务器:
可将文件从本地计算机上载到服务器。同时,您还可以将文件从SFTP服务器下载到本地计算机。
附:使用WebDav测试SFTP的方法
请打开文件窗口并添加新连接,如下所示:
提供创建的SFTPGo用户凭据:
您将能够查看文件、修改文件并将其复制到计算机:
至此,测试SFTP通过,完全可以正常使用。