Bootstrap

SftpGo 服务搭建

背景:

一、基于对线上服务器的保密和安全,不希望开发人员直接登录线上服务器,因为登录服务器的权限太多难以管控,如直接修改代码、系统配置等,希望能限制开发人员ssh登录机器,但是通过ftp/sftp上传代码文件。

二、项目中一些模块会调用sftp客户端程序,上传文件到服务器,实现相关功能,需要搭建好sftp服务端。

实验环境:

一台Centos 7.9的机器服务端,并安装docker 环境借助1Panel可视化面板一键安装Sftpgo应用来充当企业的sftp以及ftp服务器。

一、安装docker

1、安装 Docker 服务

1.Docker 服务查询(如安装跳过此步)

docker version    #查询docker 服务状态
安装Dokcer服务
卸载系统之前可能安装的 docker(防止版本不一致,发生冲突)

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

安装 Docker-CE 基本环境


sudo yum install -y yum-utils \ 
device-mapper-persistent-data \ 
lvm2

设置 docker repo 的 yum 位置

sudo yum-config-manager \ 
--add-repo \ 
https://download.docker.com/linux/centos/docker-ce.repo

安装 docker,以及 docker-cli

sudo yum install docker-ce docker-ce-cli containerd.io  

启动docker 服务


systemctl start  docker  #docker 服务开启
systemctl restart docker #docker 服务重启
systemctl enable docker  #docker 开机自动启动服务

二、安装1Panel

1Panel 系统借助 SFTPGo 应用,可以快速创建 SFTP、FTP 和 WebDAV 服务,支持多用户、多目录、多权限。 

参考文档:FTP - 1Panel 文档

1Panel 是新一代的 Linux 服务器运维管理面板功能和宝塔有点类似,但是免费开源的

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh      #Centos/redhat版本使用
[root@localhost ~]# curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
#开始下载 1Panel v1.10.2-lts 版本在线安装包
安装包下载地址: https://resource.fit2cloud.com/1panel/package/stable/v1.10.2-lts/release/1panel-v1.10.2-lts-linux-amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 48.4M  100 48.4M    0     0  16.3M      0  0:00:02  0:00:02 --:--:-- 16.3M
1panel-v1.10.2-lts-linux-amd64/1panel.service
1panel-v1.10.2-lts-linux-amd64/1pctl
1panel-v1.10.2-lts-linux-amd64/LICENSE
1panel-v1.10.2-lts-linux-amd64/README.md
1panel-v1.10.2-lts-linux-amd64/install.sh
1panel-v1.10.2-lts-linux-amd64/1panel

 ██╗    ██████╗  █████╗ ███╗   ██╗███████╗██╗
███║    ██╔══██╗██╔══██╗████╗  ██║██╔════╝██║
╚██║    ██████╔╝███████║██╔██╗ ██║█████╗  ██║
 ██║    ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝  ██║
 ██║    ██║     ██║  ██║██║ ╚████║███████╗███████╗
 ╚═╝    ╚═╝     ╚═╝  ╚═╝╚═╝  ╚═══╝╚══════╝╚══════╝
[1Panel Log]: ======================= 开始安装 =======================
设置 1Panel 安装目录(默认为/opt):
[1Panel Log]: 您选择的安装路径为 /opt                  #设置安装路径
[1Panel Log]: 检测到 Docker 已安装,跳过安装步骤        #检查docker是否安装,如果未安装则先安装docker
[1Panel Log]: 启动 Docker
[1Panel Log]: ... 在线安装 docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 56.8M  100 56.8M    0     0  17.8M      0  0:00:03  0:00:03 --:--:-- 17.8M
[1Panel Log]: docker-compose 安装成功 
设置 1Panel 端口(默认为42074):                         #设置端口
[1Panel Log]: 您设置的端口为:42074
[1Panel Log]: 防火墙未开启,忽略端口开放                      
设置 1Panel 面板用户(默认为88326053fc):                 #面板用户名
[1Panel Log]: 您设置的面板用户为:88326053fc               
设置 1Panel 面板密码(默认为08e13ab1ca):                 # 设置面板用户密码           
[1Panel Log]: 配置 1Panel Service
Created symlink from /etc/systemd/system/multi-user.target.wants/1panel.service to /etc/systemd/system/1panel.service.
[1Panel Log]: 启动 1Panel 服务

[1Panel Log]: 1Panel 服务启动成功!
[1Panel Log]:
[1Panel Log]: =================感谢您的耐心等待,安装已经完成==================
[1Panel Log]:
[1Panel Log]: 请用浏览器访问面板:
[1Panel Log]: 外网地址: http://122.231.147.239:42074/8a36118354
[1Panel Log]: 内网地址: http://192.168.245.133:42074/8a36118354
[1Panel Log]: 面板用户: 88326053fc
[1Panel Log]: 面板密码: 08e13ab1ca
[1Panel Log]:
[1Panel Log]: 项目官网: https://1panel.cn
[1Panel Log]: 项目文档: https://1panel.cn/docs
[1Panel Log]: 代码仓库: https://github.com/1Panel-dev/1Panel
[1Panel Log]:
[1Panel Log]: 如果使用的是云服务器,请至安全组开放 42074 端口

根据提示登录可视化面板

安装完成1Panel

三、安装SFTPGO

在可视化面板中找到应用商店,搜索SFTPGo,点击安装

根据要求填写应用的端口号以及访问FTP、SFTP的ip地址,可以根据要求填写内网和外网地址

端口外部访问勾选,方便后期进行管理与维护

等待安装完后再已安装里面可找到应用并可以看到应用的状态

可以看到相关容器已经运行

点击参数可以查看到SFTPGO的web端口登录信息

浏览器访问主机IP地址加8080端口 例如 http://192.168.245.133:8080/

设置密码并登录SFTPGO 管理界面

四、配置SFTPGO

选择Server Manager—Status  

可以查看FTP/SFTP 服务信息,方便后续进行管理登录

创建用户信息 只需要填写:用户名和密码 其他选项暂时不需要填写

可以看到创建的用户 信息 状态及存储的位置

返回终端可以看到容器内的Vlom 卷和容器外部的 "/opt/1panel/apps/sftpgo/sftpgo/data/data 进行连接,所以我们访问容器外部的/     #使用docker inspect 容器ID或者容器名字,即可查询详细信息 

可以查看创建的用户及最后登录时间,当我们创建好用户之后再

/opt/1panel/apps/sftpgo/sftpgo/data/data 路径线没有出现用户的数据存储的文件,需要登录之后方可看到信息

五、验证

下载链接FTP/SFTP 服务链接工具,推荐winSCP 、FileZilla进行去连接

打开winSCP工具选择新标签页建立新的连接

选择新的站点文件协议选择SFTP 端口号选择2022端口,#该端口号根据前方安装容器的端口信息决定。

填好信息可以直接登录

首次创建完用户,并首次登录不会看到任何的数据信息

在winSCP端创建文件夹可以设置相应的权限

新创建用户登录SFTP后再/opt/1panel/apps/sftpgo/sftpgo/data/data/data 路径下新生成一个角色的存储文件目录

在WinSCP 创建yangtest文件夹

在终端中可以查询到从WinSCP创建过来的文件夹权限也是一致的

在终端中创建一个文件名字为1qa2ws.txt 

在winSCP终端中重新查询一下

结论:已经验证完成SFTP服务的搭建,完成在linux 端创建文件在WinSCP端可以看到,反之也能看到,完成通过SFTPGO服务可以搭建SFTP/STP 服务。

;