1. SFTPGo简介

1.1. github

github地址:https://github.com/drakkan/sftpgo/blob/main/README.zh_CN.md

github下载:https://github.com/drakkan/sftpgo/releases

1.2. SFTPGo主要特性

sftpgo是一款功能齐全、高度可配置化、支持自定义 HTTP/S,FTP/S 和 WebDAV 的 SFTP 服务。 一些存储后端支持:本地文件系统、加密本地文件系统、S3(兼容)对象存储,Google Cloud 存储,Azure Blob 存储,SFTP。

  • 支持服务本地文件系统、加密本地文件系统、S3 兼容对象存储、Google Cloud 存储、Azure Blob 存储或其它基于 SFTP/SCP/FTP/WebDAV 协议的 SFTP 账户。
  • 基于web的管理员界面,更方便地管理用户、目录和连接;可以在浏览器中更改他们的凭据、管理和共享他们的文件。
  • 存储在 “数据提供程序” 中的虚拟账户;公钥和密码认证。支持每个用户多个公钥;支持SSH用户证书认证。
  • 支持 SQLite, MySQL, PostgreSQL, CockroachDB, Bolt (Go 原生键/值存储) 和内存数据提供程序。
  • 每个用户和每个目录虚拟权限,对于每个暴露的路径你可以允许或禁止:目录展示、上传、覆盖、下载、删除、重命名、创建文件夹、创建软连接、修改 owner/group/file 模式和更改时间。
  • 带宽节流,基于客户端 IP 地址独立设置上传、下载和覆盖。
  • 日志文件是精确的,它们被存储为易被解析的 JSON 格式。
  • SFTPGo支持插件系统,因此可以使用外部插件拓展。
1.3. 目前安装的平台

SFTPGo 基于 Linux 开发和创建的,使用适配的 SQL 服务作为数据提供程序:PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x, CockroachDB stable等。安装 Linux、macOS 和 Windows可在https://github.com/drakkan/sftpgo/releases下载,这里下载linux版本的程序:

1)查看操作系统版本信息

uname -r

2)下载适配内核的x86_64的linux安装包

在这里插入图片描述

2. 安装配置

1)上传并解压安装包


mkdir -p /opt/sftpgo

tar xvJf sftpgo_v2.3.3_linux_x86_64.tar.xz  -C /opt/sftpgo/

2)创建sftpgo用户


useradd -M -s /sbin/nologin sftpgo

chown -R sftpgo:sftpgo /opt/sftpgo

3)创建配置文件


mkdir -pv /etc/sftpgo

chown -R sftpgo:sftpgo /etc/sftpgo/

cp /opt/sftpgo/sftpgo.json /etc/sftpgo/

find /opt/sftpgo/sqlite/ -type f -iname '*.sql' -print | sort -n | xargs cat | sudo -u sftpgo sqlite3 sftpgo.db

chown -R sftpgo:sftpgo /etc/sftpgo/*

4)验证sqllite3是否可用

在这里插入图片描述

5)将sftpgo添加为service服务


cp /opt/sftpgo/init/sftpgo.service /usr/lib/systemd/system/

[Unit]
Description=SFTPGo Server
After=network.target

[Service]
User=sftpgo
Group=sftpgo
Type=simple
WorkingDirectory=/etc/sftpgo
Environment=SFTPGO_CONFIG_DIR=/etc/sftpgo/
Environment=SFTPGO_LOG_FILE_PATH=
EnvironmentFile=-/etc/sftpgo/sftpgo.env
ExecStart=/usr/bin/sftpgo serve
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=8192
KillMode=mixed
PrivateTmp=true
Restart=always
RestartSec=10s
NoNewPrivileges=yes
PrivateDevices=yes
DevicePolicy=closed
ProtectSystem=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target


systemctl daemon-reload


ln -s /opt/sftpgo/sftpgo /usr/bin/


whereis sftpgo
which sftpgo
sftpgo -v

6)修改配置文件

vi /etc/sftpgo/sftpgo.json

1) 访问文件系统端口号配置(默认2022)
“sftpd”–>“bindings”–>(“port”=“2022”)
2)backups目录配置(需手动创建)
“data_provider”–>(“backups_path”: “/opt/sftpgo/backup”)
3)sftpgo的管理页面(web端)访问端口(默认8080)
“httpd”–>“bindings”–>(“port”=“8090”)
4)templates目录配置(在解压目录,也可手动创建)
“httpd”–>(“templates_path”=“/opt/sftpgo/templates”)
5)static目录配置(在解压目录,也可手动创建)
“httpd”–>(“static_files_path”=“/opt/sftpgo/static”)
6)后台存储配置数据库(默认sqlite)

  • “data_provider”–>(“driver”: “sqlite”)
  • “data_provider”–>(“name”: “sftpgo.db”)
  • “data_provider”–>(“host”: “localhost”)
  • “port”–>(“”) ##端口默认为空即可

7)也可以使用MySQL做程序后端数据库(个人比较推荐)

vi /etc/sftpgo/sftpgo.json

  "data_provider": {
    "driver": "mysql", 
    "name": "SFTP", 
    "host": "10.0.10.201", 
    "port": 8306, 
    "username": "admin", 
    "password": "Qwer123$", 
    "sslmode": 0,
    "root_cert": "",
    "client_cert": "",

3. 启动服务

1)启动服务端


systemctl start sftpgo

systemctl status sftpgo

netstat -anpl|grep sftpgo

ps -axu|grep sftpgo

2)访问web客户端

地址:http://10.0.10.201:8090/

3)第一次需要创建管理员用户名密码

在这里插入图片描述

4)进入WebAdmin

在这里插入图片描述

4. 使用SFTPGo

1)创建用户

创建用户名和密码:

在这里插入图片描述

指定数据文件对应的服务器目录,提交(Submit):

在这里插入图片描述

2)FileZilla客户端访问测试

在这里插入图片描述

3)创建和上传下载文件测试

在这里插入图片描述

4. 总结

1)ftp文件系统是日常工作中比较常用的服务器软件,传统的ftp或者sftp文件系统如vsftp或者filezilla server等传统的文件系统,使用和管理起来都比较麻烦

2)SFTPGo是一个功能齐全,高度可配置化的文件系统程序工具。其可视化的web端管理方式,简化操作和运维成本,使用起来简单高效。

3)参考文章:https://www.jianshu.com/p/e5a68aebf97f,https://github.com/drakkan/sftpgo/blob/main/README.zh_CN.md

作者 灰武士