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