背景:
一、基于对线上服务器的保密和安全,不希望开发人员直接登录线上服务器,因为登录服务器的权限太多难以管控,如直接修改代码、系统配置等,希望能限制开发人员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 服务。