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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GenICam标准(五)

系列文章目录 GenICam标准&#xff08;一&#xff09; GenICam标准&#xff08;二&#xff09; GenICam标准&#xff08;三&#xff09; GenICam标准&#xff08;四&#xff09; GenICam标准&#xff08;五&#xff09; GenICam标准&#xff08;六&#xff09; 文章目录 系列文…

jupyter notebook中使用不同的anaconda环境及常用conda命令

conda命令 在jupyter notebook中使用不同的anaconda环境其他常用conda命令 在jupyter notebook中使用不同的anaconda环境 创建环境 myenvname 需替换为自己的环境名称 conda create --name myenvname python3.7激活环境 conda activate myenvname 在该环境中安装Jupyter N…

什么是专业的CRM客户管理系统,介绍crm客户管理系统的功能作用

CRM&#xff08;Customer Relationship Management&#xff09;客户管理系统&#xff0c;是现代企业不可或缺的一款管理工具。它集客户信息管理、销售自动化、客户服务与支持、数据分析与决策支持等多项功能于一身&#xff0c;帮助企业实现客户关系的全方位管理&#xff0c;从而…

【AI学习】Together AI的新研究:Together MoA(Mixture of Agents)

第一次听说Mixture of Agents&#xff0c;原来Agent也能混合&#xff0c;有意思&#xff01; 介绍 Together AI的最新研究“Together MoA”&#xff08;Mixture of Agents&#xff0c;代理混合&#xff09;是一种创新的方法&#xff0c;旨在通过结合多个开源大型语言模型&…

proDAD V4最新版软件安装包下载+详细安装步骤

简介&#xff1a; proDAD Adorage 是一款一体化的效果库&#xff0c;完美拥有所有的效果&#xff0c;集所有Adorage卷于一体&#xff0c;该系列包含13种可用套装中的17,000多种效果。 对于每种情况都能获得完美的效果&#xff0c;支持Adobe、avid、Corel、Cyberlink、MAGIX等多…

Setapp:只需一次订阅,即可获得 240 款+ Mac 软件

为一项任务寻找合适的应用程序是一项相当艰巨的任务。过去&#xff0c;最好的办法要么是花费宝贵的时间搜索可靠的评论&#xff0c;要么就是相信无论安装什么软件都能完成任务。 如果你是 Mac 用户&#xff0c;那么 Setapp 将让这一问题成为过去。无需在需要时下载单个程序&am…

special characters are not allowed

处理域名连接nacos读取配置异常 1 项目启动报错2 问题处理3 刷新依赖重启问题解决 1 项目启动报错 使用ip可以正在启动&#xff0c;但是使用域名报下面的错误 2024-06-15 17:37:22.981 ERROR 29268 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : parse …

1)Java项目笔记搭建系统梳理相关知识

目录 前言项目结构Java部分Spring整合部分SpringBoot整合部分 模块说明规划 小结javarabbitmqmybatisspring最后推荐几本工具书 前言 工作有年头了&#xff0c;学到了很多技术&#xff0c;收获了很多。但是对与工作相关的专业技能知识的掌握杂而乱&#xff0c;不够全面系统。因…

面试题 17.06. 2出现的次数

题解&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;. - 力扣&#xff08;LeetCode&#xff09; 数位 DP 通用模板_哔哩哔哩_bilibili class Solution { public:int numberOf2sInRange(int n) {std::string str to_string(n);int len str.size();std::vector<std:…

嵌入式软件工程师入何突破瓶颈?

各位关注嵌入式软件工程师发展的朋友们&#xff0c;下面来探讨一下嵌入式软件工程师该如何突破瓶颈。首先要强调的是&#xff0c;不要仅仅将自己局限在嵌入式软件工程师这一角色定位上。 事实上&#xff0c;嵌入式软件工程师已经掌握了诸多业务层面的内容&#xff0c;完全有能力…

【AI+编程】工作日常场景随时可以AI编程,记一个问答SQL快速导出数据日常示例

今天有个场景&#xff0c;我们有个老项目&#xff0c;由于历史原因差不多1年多没使用了&#xff0c;恰巧客户紧急情况要使用。因为当时没有需求&#xff0c;所以V1.0上线后 就没做更新。 需求很简单&#xff1a;我们假定 项目问题表、客户表、问题答案表&#xff0c; 实时查询…

Linux文件与内容查阅、归档压缩

#Linux系统基础 文件与内容查找、归档压缩 find命令搜索文件 grep对文件的内容进行搜索 tar命令进行文件的压缩与解压缩 一、文件的查找 格式实例&#xff1a;find . -name "123.txt"说明find起始目录查找类型查找条件./ 或 .-name“123.txt”在当前目录中查找…

联想正式发布全栈算力基础设施新品,加速筑基AI 2.0时代

6月14日&#xff0c;以“异构智算 稳定高效”为主题的联想算力基础设施新品发布会在北京成功举办。 据「TMT星球」了解&#xff0c;在与会嘉宾和合作伙伴的见证下&#xff0c;联想正式发布率先搭载英特尔至强 6能效核处理器的联想问天WR5220 G5、联想ThinkSystem SR630 V4、联…

STM32学习笔记(一)--时钟树详解

&#xff08;1&#xff09;时钟概述&#xff1b;时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波。&#xff08;时钟相当于单片机的脉搏&#xff1b;STM32本身非常复杂&#xff0c;外设非常的多&#xff0c;为了保持低功耗工作&#xff0c;STM32 的主控默认不…

ChatTTS-WebUI测试页面项目

概述 分享可以一个专门为对话场景设计的文本转语音模型ChatTTS&#xff0c;例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本. 该模型能够预测和控制细粒度的韵律特…

idea的java代码引用proto文件报错

尝试了四种办法&#xff0c;感觉第一个和第二个比较有效。 前提是要先安装了 proto 的idea插件。 1.修改idea配置文件编译大文件的限制 proto生成的源文件有数万行&#xff0c;源文件过大导致 idea 拒绝编译过大的源文件。 解决方案&#xff1a; 如果 protoc 生成的 class 文…

智能合约之路:Web3时代的商业革新之道

随着区块链技术的日益成熟和普及&#xff0c;智能合约作为其重要应用之一&#xff0c;正逐渐引领着我们进入一个全新的商业时代&#xff0c;即Web3时代。在这个时代&#xff0c;智能合约不仅改变着商业交易的方式&#xff0c;更为商业模式带来了颠覆性的革新。本文将深入探讨智…

二分【3】 旋转数组

目录 旋转数组 旋转数组找最小值 旋转数组找指定值 严格递增序列 递增序列 旋转序列找中位数&#xff1a; 旋转数组 旋转数组找最小值 思路 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstrin…

MyBatis的逆向工程详细步骤操作

1. MyBatis的逆向工程详细步骤操作 文章目录 1. MyBatis的逆向工程详细步骤操作2. 逆向工程配置与生成2.1 MyBatis3Simple&#xff1a;基础版&#xff0c;只有基本的增删改查2.1.1 第一步&#xff1a;在pom.xml 中添加逆向工程插件2.1.2 第二步&#xff1a;配置 generatorConfi…

(虚拟机)VMware软件的安装及Ubuntu系统安装

一、VMware软件的安装 软件下载&#xff0c;可以自己找或者百度网盘下载&#xff1a; 通过百度网盘分享的文件&#xff1a;ubuntu16…等2个文件 链接:https://pan.baidu.com/s/1VEnZKY9DJ1T1vC3ae20gKQ 提取码:11b6 复制这段内容打开「百度网盘APP 即可获取」 1、解压VMwar…