当前位置: 首页 > news >正文

docker 部署 sftp

部署

1)配置 users.conf

规则:

<username>:<passwd>:<用户id>:<用户组id>:<用户子目录>

用户子目录说明:

假设用户名为:sftpUser

1) 用户目录:/home/sftpUser 目录的权限默认所属为 root:root;并且其他用户以及用户组只有读和执行的权限

2)当使用 sftpUser 用户登录后;默认进入的目录是 /home/sftpUser;但是 atmoz/sftp 的 chroot 会把 /home/sftpUser 当作“虚拟根目录” /

3)所以当 / 目录下没有任何目录的时候,就会出现创建目录也创建不了

users.conf 示例:

# sftp 的用户名为:sftpUser; 密码为: 8ff$hk90NM4@oyF;
# 中间的 :: 点,没有写;就是让系统自己去分配
# 用户子目录为 upload
sftpUser:8ff$hk90NM4@oyF:::upload
sftpUser2:8ff$hk90NM4@oyF:::upload

2) 运行 sftp 容器

/app/docker/sftp/users.conf:这个 users.conf 是让 sftp 在初始化的时候创建用户

/app/docker/sftp/upload:这个是 映射的 sftp 的/home 的目录,sftp 存储都是在用户目录下,所以这里映射着所有上传的文件

docker run \-v /app/docker/sftp/conf/users.conf:/etc/sftp/users.conf:ro \-v /app/docker/sftp/upload:/home \-p 2222:22 -d atmoz/sftp

上传目录说明

sftpUser:8ff$hk90NM4@oyF:::upload 用户子目录为 upload ;实际目录为 /home/sftpUser/upload

那么程序上传的路径就要配置为 /upload

atmoz/sftp 的 chroot 会把 /home/sftpUser当作“虚拟根目录” /使用 sftpUser 账号登录后当然只看到 /upload 目录

验证方式:

# sftpUser 为对应的用户名
sftp -P 2222 sftpUser@<host-ip>

测试上传

远程上传地址从 /upload 开始,因为 用户子目录为 upload(实际路径:/home/sftpUser/upload)

import paramikodef sftp_upload(local_path, remote_path, host, port, username, password):# 创建SSH客户端ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:# 连接服务器ssh.connect(hostname=host, port=port, username=username, password=password)# 创建SFTP客户端sftp = ssh.open_sftp()# 上传文件sftp.put(local_path, remote_path)print(f"文件上传成功: {local_path} -> {remote_path}")except Exception as e:print(f"上传失败: {e}")finally:# 关闭连接if 'sftp' in locals():sftp.close()ssh.close()# 使用示例
if __name__ == "__main__":# 配置信息host = "你的ip"port = 2222username = "sftpUser"password = "8ff$hk90NM4@oyF"# 文件路径local_file = "E://1.txt"# sftp 存储位置remote_file = "/upload/1.txt"# 执行上传sftp_upload(local_file, remote_file, host, port, username, password)

执行后:

http://www.dtcms.com/a/390071.html

相关文章:

  • 数字ic笔试
  • 武汉火影数字|数字展厅设计制作:多媒体数字内容打造
  • LLM模型的参数量估计
  • STM32H743-学习HAL库
  • 一键防范假票入账-发票识别接口-发票查验接口-信息提取
  • RTEMS 控制台驱动
  • flutter在列表页面中通过监听列表滑动偏移量控制页面中某个控件的透明度
  • linux上升级nginx版本
  • WINCC结构变量/公共弹窗
  • 信息化项目验收计划方案书
  • 1.数据库概述和三种主要控制语言
  • 找到nohup启动的程序并杀死
  • 电磁干扰EMI (Electromagnetic Interference)是什么?
  • python提取域名
  • PR工具timing report中setup time的计算过程
  • 低延迟垃圾收集器:挑战“不可能三角”
  • 【测试】发版测试准入准出标准
  • 第一部分:HTML
  • 贪心算法应用:带权任务间隔调度问题详解
  • 视频监控大数据建模分析
  • IP的重要性
  • 远程访问管理爱快路由器
  • 算法 --- 优先级队列(堆)
  • Kindle出现电池感叹号图标和黄灯闪烁怎么办?
  • 摄像头模块在无人机上的应用
  • 深度学习篇GRU---LSTM和RNN的折中方案
  • Doris聚合表和物化视图选型对比
  • 互补色颜色对应的RGB
  • Python定义UDS诊断服务(8):SecurityAccess(0x27)
  • 第1节 工具(剪映剪映小助手)准备及安装(Coze扣子空间剪映小助手教程)