Docker部署常见应用之SFTP服务器

文章目录

    • 简介
    • Dockers部署
      • 单用户
      • 多用户
      • 用户信息加密
      • 使用SSH密钥认证
    • 参考文章

在这里插入图片描述

简介

atmoz/sftp 是一个基于 Docker 的 SFTP 服务镜像,它使用 OpenSSH 来提供 SFTP 服务。这个镜像支持创建单个或多个用户的 SFTP 访问,并允许用户通过 SFTP 协议安全地共享文件。它是一个轻量级的解决方案,可以快速部署 SFTP 服务器.使用时,可以通过 Docker 命令行参数来指定 SFTP 用户名、密码和上传目录等配置。

Dockers部署

单用户

以下是使用Docker部署atmoz/sftp服务的一般步骤:

  1. 安装Docker:确保你的系统上已经安装了Docker。

  2. 拉取Docker镜像:使用以下命令从Docker Hub拉取atmoz/sftp镜像:

    sudo docker pull atmoz/sftp
    
  3. 创建文件挂载目录

    sudo mkdir /data/docker/atmoz/upload
    
  4. 启动Docker容器
    使用以下命令启动SFTP服务器,允许用户foo通过密码pass访问,并且可以操作宿主机上/data/atmoz/upload目录中的内容。同时,SFTP服务将在后台运行,并且可以通过宿主机的2222端口进行访问。:

    sudo docker run \-d \--name atmoz-sftp-server \-p 2222:22 \-v /data/docker/atmoz/upload:/home/foo/upload \atmoz/sftp foo:pass:1001
    

    这条docker run命令是用来启动一个名为atmoz/sftp的Docker容器,它将作为一个SFTP服务器运行。下面是命令各部分的解释:

    • docker run: Docker命令,用于创建并启动一个新的容器实例。

    • -d: 表示以"detached"模式运行容器,即在后台运行。

    • --name atmoz-sftp-server: 指定容器的名称为atmoz-sftp-server

    • -p 2222:22: 端口映射参数,将容器内部的22端口映射到宿主机的2222端口。这样,外部可以通过宿主机的2222端口来访问容器内的SFTP服务。

    • -v /data/atmoz/upload:/home/foo/upload: 卷挂载参数,将宿主机的/data/atmoz/upload目录挂载到容器内的/home/foo/upload目录。这允许SFTP用户foo访问和操作宿主机上指定的目录。

    • atmoz/sftp: 指定要运行的Docker镜像名称。

    • foo:pass:1001: 这是传递给容器的参数,用于设置SFTP用户的信息。格式通常为用户名:密码:UID。在这个例子中:

      • foo是SFTP用户的用户名。
      • pass是该用户的密码。
      • 1001是该用户的用户ID(UID),在Linux系统中用于标识用户。

    综上所述,这条命令的作用是启动一个SFTP服务器,允许用户foo通过密码pass访问,并且可以操作宿主机上/data/atmoz/upload目录中的内容。同时,SFTP服务将在后台运行,并且可以通过宿主机的2222端口进行访问。

  5. 连接到SFTP服务器
    使用SFTP客户端连接到你的SFTP服务器。例如,使用命令行工具sftp

    sftp -P 2222 foo@atmoz-sftp-server-ip
    
    • 这里atmoz-sftp-server-ip 容器所在服务器的IP地址。密码为pass

多用户

  1. 创建配置文件

    /data/atmoz/conf 目录下创建配置文件user.sconf

    • 创建配置文件目录
      sudo mkdir /data/docker/atmoz/conf
      
    • 创建users.conf文件, 增加下面内容:
      foo:123:1001:100
      bar:abc:1002:100
      baz:xyz:1003:100
      
  2. 启动容器

    sudo docker run \-d \--name atmoz-sftp-server \--privileged=true \-p 2222:22 \-v mySftpVolume:/home \-v /data/docker/atmoz/config/users.conf:/etc/sftp/users.conf:ro \atmoz/sftp
    
    • 注意 -v mySftpVolume:/home 会在自动生成mySftpVolume 目录。 此处不能自定义目录, 自定义目录无法登录。

用户信息加密

  1. crypt加密
    命令行运行以下命令, 对密码加密,
    python -c "import crypt; print(crypt.crypt('YOUR_PASSWORD'))"
    
    • 这里YOUR_PASSWORD替换为你的密码
  2. 启动容器
    sudo docker run \-d \--name atmoz-sftp-server \-p 2222:22 \-v /data/docker/atmoz/upload:/home/foo/upload \atmoz/sftp \'foo:<encrypted-password>:e:1001'
    
    <encrypted-password>替换为加密后的密码。
    注意: :e 表示前面为加密密码, 同时'<user>:<encrypted-password>:e:1001'要用单引号括起来。

使用SSH密钥认证

  1. 生成密钥
    以下命令生成密钥
    # 密钥存放创建目录
    sudo mkdir -p /data/docker/atmoz/ssh
    # 生成密钥
    sudo ssh-keygen -t rsa -b 4096 -f /data/docker/atmoz/ssh/my_rsa_key
    
    • 使用ssh-keygen命令生成了一个4096位的RSA密钥对,密钥文件将被存储在/data/docker/atmoz/ssh/my_rsa_key
    • 生成密钥时需要输入密码,这个密码用于保护私钥文件。
  2. 启动容器
    sudo docker run \-d \--name atmoz-sftp-server \-p 2222:22 \-v /data/docker/atmoz/ssh/my_rsa_key.pub:/home/foo/.ssh/keys/my_rsa_key.pub:ro \-v /data/docker/atmoz/upload:/home/foo/upload \atmoz/sftp \foo::1001
    
    • 使用docker run命令启动了一个名为atmoz-sftp-server的容器,映射了容器的22端口到宿主机的2222端口。
    • 将公钥文件挂载到容器内的/home/foo/.ssh/keys/my_rsa_key.pub路径,这样容器就可以使用这个公钥来验证客户端的私钥。
    • 还挂载了宿主机的/data/docker/atmoz/upload目录到容器的/home/foo/upload目录,用于文件的上传和下载。
    • atmoz/sftp是使用的Docker镜像名称,foo::1001是指定的SFTP用户及其所属组ID。
  3. 连接到SFTP服务器
    sftp -i /path/to/your/private_key -P 2222 foo@atmoz-sftp-server-ip
    
    • 使用sftp命令登录到SFTP服务器,-i选项指定了私钥文件的路径,foo是SFTP服务器上的用户名,atmoz-sftp-server-ip是容器所在服务器的IP地址。
    • 需要将/path/to/your/private_key替换为实际的私钥文件路径。

参考文章

github atmoz/sftp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/353064.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAN总线仲裁(四)

​ 多设备同时发送遇到的问题 CAN总线只有一对差分信号线&#xff0c;同一时间只能有一个设备操作总线发送数据&#xff0c;若多个设备同时有发送需求&#xff0c;该如何分配总线资源&#xff1f; 解决问题的思路&#xff1a;制定资源分配规则&#xff0c;依次满足多个设备的…

空气质量预报模式系统WRF-CMAQ

空气污染问题日益受到各级政府以及社会公众的高度重视&#xff0c;从实时的数据监测公布到空气质量数值预报及预报产品的发布&#xff0c;我国在空气质量监测和预报方面取得了一定进展。随着计算机技术的高速发展、空气污染监测手段的提高和人们对大气物理化学过程认识的深入&a…

【vue大作业-端午节主题网站】【预览展示视频和详细文档】

vue大作业-端午节主题网站介绍 端午节&#xff0c;又称为龙舟节&#xff0c;是中国的传统节日之一&#xff0c;每年农历五月初五庆祝。这个节日不仅是纪念古代爱国诗人屈原的日子&#xff0c;也是家人团聚、共享美食的时刻。今天&#xff0c;我们非常高兴地分享一个以端午节为…

高压防触碰预警装置,工期重要还是命重要?

“说了多少遍了&#xff0c;不要在高压线下赶工期”吊车违规施工碰撞到高压线&#xff0c;导致供电线路跳闸停电事故&#xff0c;现场火花四溅及其危险&#xff0c; 高压线路被外力破坏的情况&#xff0c;违规施工、赶工期、视觉盲区导致线路外破等情况&#xff0c;想必大家也…

基于STM32的简易智能家居设计(嘉立创支持)

一、项目功能概述 1、OLED显示温湿度、空气质量&#xff0c;并可以设置报警阈值 2、设置4个继电器开关&#xff0c;分别控制灯、空调、开关、风扇 3、设计一个离线语音识别系统&#xff0c;可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上 4、OLED实时显示&#…

基于B/S版java语言+SpringBoot技术开发的云HIS系统源码 HIS系统住院业务模块常见问题及解决方案

基于B/S版java语言SpringBoot技术开发的云HIS系统源码 HIS系统住院业务模块常见问题及解决方案 随着医疗技术的不断提高&#xff0c;住院治疗已成为许多病人的常规选择。但是&#xff0c;住院治疗不仅需要医护人员的精心照顾&#xff0c;也需要个高效的信息系统来保证整个治疗过…

flac格式如何转mp3?7大热门实用音频转换软件大PK

FLAC是Free Lossless Audio Codec&#xff08;免费无损音频编解码器&#xff09;的缩写&#xff0c;是一种在压缩文件大小的同时保留原始音乐质量的音频格式。不过&#xff0c;大多数音频格式都会在音乐质量和文件大小之间做出权衡。当你使用flac获得更好的音乐质量时&#xff…

C++ 63 之 函数模版和普通函数的区别

#include <iostream> #include <string> using namespace std;template<typename T> T myAdd(T a, T b){return a b; }int myAdd2(int a, int b){return a b; }int main() {int a 1;int b 2;char c a; // a的ask码 97// cout << myAdd(a,c) <…

BarTender软件最新版下载-bartender条码标签打印软件下载

​​BarTender​​是一款遵循“look and feel”标准的​​条码打印​​软件。​​BarTender​​条码打印软件能够帮助用户挥洒自如&#xff0c;轻松制作出标签条码&#xff0c;包括文本、图形、​​条形码​​和大多数序列化功能。BarTender条码打印软件功能强大、操作简单&…

基于QT和C++实现的中国象棋

一&#xff0c;源码 board.h #ifndef BOARD_H #define BOARD_H#include <QWidget> #include "Stone.h"class Board : public QWidget {Q_OBJECT public:explicit Board(QWidget *parent 0);bool _bRedTurn; // 红方先走int _currentPlayer; // 当前玩家&…

2025年计算机毕业设计题目参考

今年最新计算机毕业设计题目参考 以下可以参考 springboot洗衣店订单管理系统 springboot美发门店管理系统 springboot课程答疑系统 springboot师生共评的作业管理系统 springboot平台的医疗病历交互系统 springboot购物推荐网站的设计与实现 springboot知识管理系统 springbo…

5G工业路由器在智慧交通车路协同应用的深度解析

随着科技的飞速发展&#xff0c;智慧交通已成为现代城市发展的重要方向。在智慧交通的众多技术中&#xff0c;5G工业路由器凭借其高速、稳定、安全等特性&#xff0c;成为车路协同应用中不可或缺的一环。本文将在本文中深度解析5G工业路由器在智慧交通车路协同应用中的重要作用…

Interlinks Manager评测:WordPress 的最佳内部链接插件?

在这篇Interlinks Manager评测中&#xff0c;我们将彻底查看它是否真的是 WordPress 最佳内部链接插件&#xff01;我们还将检查它是否值得您尝试。现在就开始吧 快速浏览一下插件&#xff0c;你就会对其提供的功能有一个基本的了解。 Interlinks Manager是一款 SEO 插件&…

C++迈向精通:当我尝试修改虚函数表

尝试修改虚函数表 本期纯整活儿好吧&#xff01;&#xff01;&#xff01;&#xff01; 初衷 有一天我突然开始好奇虚函数表是否真的存在&#xff0c;于是我开始想是否能够从C中查看或者调用虚函数表中的内容。&#xff0c;于是有了下面的操作。 操作过程 起初我并没有思路…

一文学会消息中间件的基础知识

什么是消息队列 队列数据结构 我们都学习过数据结构与算法相关的内容,消息队列从数据结构来看,就是一个由链表或是数组构成的一个先进先出的数据容器。由链表实现还是数组实现都没关系,它只要满足数据项是先进先出的特点,那么就可以认为它是一个队列结构。队列是只允许在…

已解决:geecg Column ‘id‘ in order clause is ambiguous

报错&#xff1a;Column id in order clause is ambiguous&#xff1b; MyBatis关联查询&#xff0c;相同字段名冲突&#xff0c;sql语句已经使用别名但仍然报错。 分析&#xff1a;写mapper映射文件时&#xff0c;在写到一对一关联&#xff0c;一对多关联时&#xff0c;由于两…

MATLAB画图时添加标注显示有效数字的位数,可以编辑此函数

本来系统有个函数&#xff0c;在图像窗口选择标注工具&#xff0c;再在图像窗口右击鼠标&#xff0c;选择"编辑文本更新函数..."&#xff0c;即打开系统的设置函数&#xff0c;可以修改最后一行&#xff1a; formattedValue [valueFormat num2str(value,4) removeV…

论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning

论文阅读笔记&#xff1a;Towards Higher Ranks via Adversarial Weight Pruning 1 背景2 创新点3 方法4 模块4.1 问题表述4.2 分析高稀疏度下的权重剪枝4.3 通过SVD进行低秩逼近4.4 保持秩的对抗优化4.5 渐进式剪枝框架 5 效果5.1 和SOTA方法对比5.2 消融实验5.3 开销分析 6 结…

4418 android4.4 + 6818 android5.1 移植gps

网上已经有的移植的资料 目前 3399 的板子上 对已有的可运行的GPS 进行测试。 我这里的 rk3399 的板卡 , Android7 Android8 都是 可以运行 GPS 应用程序的。 使用的是 ttyS4 的节点。 问题: 我发现, 开机就删掉 ttyS4 节点,也是可以 打开应用的。并且可以正常运行。不…

归并排序与计数排序

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 1.归并排序 1.递归实现归并排序 归并排序 //归并排序public static void mergeSort(int[] array) {mergeSortFun(array,0,array.length-1); r…