【linux知识】sftp配置免密文件推送
SFTP配置免密文件推送
- **一、配置 SFTP 用户**
- **1. 创建系统用户(非登录用户)**
- **2. 设置用户密码**
- **3. 创建 SFTP 根目录并设置权限**
- **4. 配置 SFTP 服务(修改 SSH 配置)**
- **5. 重启 SSH 服务使配置生效**
- **二、免密 SFTP 文件推送(基于 SSH 密钥认证)**
- **1. 生成客户端 SSH 密钥对(在推送端执行)**
- **2. 上传公钥到 SFTP 服务器(服务端操作)**
- **3. 测试免密连接(客户端验证)**
- **4. 自动化文件推送脚本示例(客户端)**
- **三、常见问题与解决方案**
- **四、安全注意事项**
以下是 Linux 系统配置 SFTP 用户及免密文件推送的详细步骤,结果以 Markdown 格式呈现:
一、配置 SFTP 用户
1. 创建系统用户(非登录用户)
# 添加用户组(可选,建议创建独立组便于管理)
groupadd sftp-users# 创建用户并指定所属组(-s /sbin/nologin 禁止登录系统)
useradd -d /data/sftp/user1 -g sftp-users -s /sbin/nologin user1
2. 设置用户密码
passwd user1
3. 创建 SFTP 根目录并设置权限
# 创建用户根目录(需与 useradd -d 指定的目录一致)
mkdir -p /data/sftp/user1# 确保目录属主为 root(关键!否则 SFTP 服务可能拒绝访问)
chown root:root /data/sftp/user1
chmod 755 /data/sftp/user1 # 目录权限必须为 755 或更低# 创建用户可写子目录(如上传目录)
mkdir /data/sftp/user1/upload
chown user1:sftp-users /data/sftp/user1/upload # 设置子目录属主为用户
chmod 755 /data/sftp/user1/upload # 若需写入权限,改为 755 或 700
4. 配置 SFTP 服务(修改 SSH 配置)
vi /etc/ssh/sshd_config
在文件末尾添加以下内容(启用 Chroot 监狱,限制用户访问范围):
Subsystem sftp /usr/lib/openssh/sftp-server # 确保该行未被注释Match Group sftp-users # 匹配用户组ChrootDirectory /data/sftp/%u # %u 代表用户名,对应 /data/sftp/user1ForceCommand internal-sftp # 强制使用 SFTPAllowTCPForwarding noX11Forwarding noPermitTunnel noAllowTcpForwarding noChrootDirectory /data/sftp/%uForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no# 可选:限制用户只能访问指定目录(禁止向上访问)# 若需写入权限,需确保 Chroot 目录属主为 root 且权限为 755
5. 重启 SSH 服务使配置生效
systemctl restart sshd
二、免密 SFTP 文件推送(基于 SSH 密钥认证)
1. 生成客户端 SSH 密钥对(在推送端执行)
# 生成 RSA 密钥(默认密钥路径:~/.ssh/id_rsa)
ssh-keygen -t rsa -b 4096 -C "sftp-automation"
- 按提示完成生成,无需设置密码(实现免密)。
2. 上传公钥到 SFTP 服务器(服务端操作)
# 在服务端创建用户密钥目录(若不存在)
mkdir -p /home/user1/.ssh
chmod 700 /home/user1/.ssh # 目录权限必须为 700# 将客户端公钥内容写入 authorized_keys 文件
vi /home/user1/.ssh/authorized_keys
# 粘贴客户端 id_rsa.pub 的内容,保存退出chmod 600 /home/user1/.ssh/authorized_keys # 文件权限必须为 600
chown -R user1:sftp-users /home/user1/.ssh # 设置属主和属组
3. 测试免密连接(客户端验证)
# 使用 sftp 命令连接(无需输入密码)
sftp user1@server-ip
- 若成功连接且无密码提示,说明配置成功。
4. 自动化文件推送脚本示例(客户端)
#!/bin/bash
# 定义变量
SFTP_USER="user1"
SFTP_HOST="server-ip"
REMOTE_PATH="/upload"
LOCAL_FILE="/data/local/file.txt"# 使用 sftp 命令批量传输(-b 执行脚本)
(
echo "put $LOCAL_FILE $REMOTE_PATH"
echo "bye"
) | sftp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $SFTP_USER@$SFTP_HOST
- 参数说明:
-o StrictHostKeyChecking=no
:跳过主机密钥检查(适用于自动化场景,生产环境需谨慎)。UserKnownHostsFile=/dev/null
:禁止记录主机密钥。
三、常见问题与解决方案
问题现象 | 可能原因 | 解决方案 |
---|---|---|
无法连接 SFTP 服务 | SSH 服务未启动或端口被防火墙拦截 | 启动 SSH 服务,开放 22 端口(ufw allow ssh ) |
Chroot 目录权限错误 | 根目录属主非 root 或权限高于 755 | 执行 chown root:root /data/sftp/user1 和 chmod 755 /data/sftp/user1 |
无法上传文件(权限拒绝) | 子目录无写入权限 | 修改子目录权限为 755 或 700(如 chmod 755 /upload ) |
免密认证失败 | 公钥未正确添加或权限错误 | 检查 authorized_keys 权限是否为 600,属主是否正确 |
用户无法访问指定目录 | Chroot 路径配置错误 | 确保 ChrootDirectory 与用户主目录一致(%u 正确替换) |
四、安全注意事项
- Chroot 目录权限:根目录必须由 root 所有且权限为 755,否则 SFTP 服务会拒绝访问。
- 密钥管理:定期轮换 SSH 密钥,避免公钥泄露导致安全风险。
- 用户权限隔离:通过独立用户组(如
sftp-users
)管理 SFTP 用户,限制其系统访问权限。 - 防火墙配置:确保服务器开放 SSH 端口(默认 22),并限制 SFTP 用户的 IP 访问范围。
通过以上步骤,可实现 Linux 系统中 SFTP 用户的安全配置及免密文件推送功能。
相关文章:
【linux知识】sftp配置免密文件推送
SFTP配置免密文件推送 **一、配置 SFTP 用户****1. 创建系统用户(非登录用户)****2. 设置用户密码****3. 创建 SFTP 根目录并设置权限****4. 配置 SFTP 服务(修改 SSH 配置)****5. 重启 SSH 服务使配置生效** **二、免密 SFTP 文件…...
华为2025年校招笔试手撕真题教程(二)
一、题目 大湾区某城市地铁线路非常密集,乘客很难一眼看出选择哪条线路乘坐比较合适,为了解决这个问题,地铁公司希望你开发一个程序帮助乘客挑选合适的乘坐线路,使得乘坐时间最短,地铁公司可以提供的数据是各相邻站点…...
【Leetcode 每日一题】3362. 零数组变换 III
问题背景 给你一个长度为 n n n 的整数数组 n u m s nums nums 和一个二维数组 q u e r i e s queries queries,其中 q u e r i e s [ i ] [ l i , r i ] queries[i] [l_i, r_i] queries[i][li,ri]。 每一个 q u e r i e s [ i ] queries[i] queries[i]…...
JWT了解
JSON Web Token (JWT) 概述 JSON Web Token (JWT) 是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输。它通常被用来在客户端和服务器之间传递声明,例如用户的身份验证信息,使得服务端可以…...
复杂项目中通过使用全局变量解决问题的思维方式
最近接手了一个公司的老系统的PHP项目,里面的代码比较混乱,排查解决了一个问题,决定将这个思路记录下来,希望能帮助更多的人。 其中一部分的代码信息如下: 备注:为了避免公司的相关数据信息暴露࿰…...
upload-labs通关笔记-第18关文件上传之条件竞争
目录 一、条件竞争 二、源码分析 1、源码分析 2、攻击原理 3、渗透思路 三、实战渗透 1、构造脚本 2、获取上传脚本URL 3、构造访问母狼脚本的Python代码 4、bp不断并发上传母狼脚本 (1)开启专业版bp (2) 上传母狼脚本…...
华为Cangjie编程技术深度解析(续篇1)
华为Cangjie编程技术深度解析(续篇) 第六章 分布式运行时深度剖析 6.1 设备虚拟化引擎 Cangjie设备抽象层(DAL)原理 // 设备能力声明式描述 @DeviceProfile(id = "AGV-0023",capabilities = {mobility: { speed: 1.5m/s, payload: 50kg },sensors: [lidar, t…...
WordPress AI插件 新增支持一键批量自动生成WooCommerce 产品描述、产品图、产品评论
Linkreate wordpressAI智能插件-自动化运营网站 文章生成与优化|多语言文章生成|关键词生成与分类管理|内容采集与管理|定时任务与自动|多任务后台运行|API集成与AI客服|媒体生成功能 一款可以24小时自动发布原创文章的WordPress插件,支持AI根据已有的长尾关键词、关…...
如何测试JWT的安全性:全面防御JSON Web Token的安全漏洞
在当今的Web应用安全领域,JSON Web Token(JWT)已成为身份认证的主流方案,但OWASP统计显示,错误配置的JWT导致的安全事件占比高达42%。本文将系统性地介绍JWT安全测试的方法论,通过真实案例剖析典型漏洞,帮助我们构建全…...
华为昇腾开发——多模型资源管理(C++)
使用ACLLite进行多模型资源管理(C++实现) 在使用Ascend ACL(Ascend Computing Language)的ACLLite库进行多模型推理时,合理的资源管理至关重要。以下是如何在C++中实现多模型资源管理的方案: 1. 资源管理基础 首先,我们需要理解Ascend平台的关键资源: 设备(Device)资…...
【开源解析】基于深度学习的双色球预测系统:从数据获取到可视化分析
基于深度学习的双色球预测系统:从数据获取到可视化分析 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自每一个灵感闪现的夜晚。…...
【RAG】ragflow源码亮点:文档embedding向量化加权融合
引言: 最近在看ragflow源码,其中有一个较为巧妙地设计:分别将 文字 、 标题 行向量化 之后,直接根据权重,进行加法运算,得到向量融合,增强了文本向量化的表示能力,这里开始讨论一下…...
vue3+element-plus+pinia完整搭建好看简洁的管理后台
目录 一、项目介绍 二、项目结构 1.vscode的项目截图 2.项目依赖 三、项目截图 1.登录页 2.首页 3.汽车管理 4.汽车信息 5.系统管理 6.订单管理 7.数据统计 8.个人中心 四、源码分析 1.数据存储与同步 2.汽车信息 3.框架布局 五、总结 一、项目介绍 项目使用…...
新手到资深的Java开发编码规范
新手到资深的开发编码规范 一、前言二、命名规范:代码的 “第一印象”2.1 标识符命名原则2.2 命名的 “自描述性” 原则2.3 避免魔法值 三、代码格式规范:结构清晰的视觉美学3.1 缩进与空格3.2 代码块规范3.3 换行与断行 四、注释规范:代码的…...
Docker架构详解
一,Docker的四大要素:Dockerfile、镜像(image)、容器(container)、仓库(repository) 1.dockerfile:在dockerfile文件中写构建docker的命令,通过dockerbuild构建image 2.镜像:就是一个只读的模板,镜像可以用来创建docker容器&…...
VS Code中Maven未能正确读取`settings.xml`中配置的新路径
在VS Code中Maven未能正确读取settings.xml中配置的新路径,通常是由于以下原因导致的: 一、VS Code未使用你修改的settings.xml文件 VS Code的Maven插件可能使用了默认配置或指向其他settings.xml文件。解决方法: 手动指定settings.xml路径…...
Spring Boot 注解 @ConditionalOnMissingBean是什么
一句话总结: ConditionalOnMissingBean 是 Spring Boot 提供的一个 条件注解(Conditional Annotation),意思是: 只有当 Spring 容器中 不存在 某个 Bean 时,当前的 Bean 或配置才会被加载。 这是一种典型的…...
labview实现LED流水灯的第二种方法
LED流水灯的描述:写一个跑马灯程序,7个灯从左到右不停的轮流点亮,闪烁间隔由滑动条调节,并尝试拓展到任意个LED灯。 在前面的文章中,我们提到了使用labview实现LED流水灯的第一种方法。这篇文章来介绍一下实现LED流水灯的第二种方…...
Katoolin3 项目介绍:在 Ubuntu 上轻松安装 Kali Linux 工具
引言 在网络安全和渗透测试领域,Kali Linux 以其丰富的工具集成为首选操作系统。然而,Kali Linux 作为一个专为安全研究设计的系统,可能不适合日常使用或服务器环境(如 Ubuntu VPS)。Katoolin3 是一个强大的 Python 脚…...
labview设计一个虚拟信号发生器
目标:设计一个虚拟信号发生器,通过功能键的设置可以产生正弦波、三角波、方波和锯齿波,并可以通过输入控件设置采集信号的频率、幅值、相位等参数。 一、正弦波 (1)创建一个枚举 (2)点击属性后…...
java I/O
文件字符流 字符流不同于字节,字符流是以一个具体的字符进行读取,因此它只适合读纯文本的文件,如果是其他类型的文件不适用。 字节流;英文1个字节,中文3个字节。 字符流:中英文都是2个字节 public static…...
机器学习第二十三讲:CNN → 用放大镜局部观察图片特征层层传递
机器学习第二十三讲:CNN → 用放大镜局部观察图片特征层层传递 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 CNN详…...
webpack构建速度和打包体积优化方案
一、分析工具 1.1 webpack-bundle-analyzer 生成 stats.json 文件 打包命令webpack --config webpack.config.js --json > stats.json使用 webpack-bundle-analyzer 插件const BundleAnalyzerPlugin = require(webpack-bundle-analyzer).BundleAnalyzerPlugin; plugins: […...
RabbitMQ可靠传输——持久性、发送方确认
一、持久性 前面学习消息确认机制时,是为了保证Broker到消费者直接的可靠传输的,但是如果是Broker出现问题(如停止服务),如何保证消息可靠性?对此,RabbitMQ提供了持久化功能: 持久…...
《深度掌控Linux:openEuler、CentOS、Debian、Ubuntu的全方位运维指南》
《深度掌控Linux:openEuler、CentOS、Debian、Ubuntu的全方位运维指南》 一、引言 在当今数字化的时代背景下,Linux操作系统凭借其卓越的性能、可靠性和开源的优势,在服务器、云计算、嵌入式系统等众多领域占据着举足轻重的地位。对于IT运维…...
关于大语言模型的问答?
1.Why is prompt(提示词) engineering necessary when working with large language models (LLMs)? 答:Despite LLMs are powerful and versatile, they could still generate texts that are too generic, hallucinated, irrelevant, or …...
大模型应对大风等极端天气的卓越效果及其在能源预测中的特殊价值
引言 近年来,全球气候变化加剧,极端天气事件频发,尤其是大风天气的强度和频率显著增加。这不仅对电网安全运行带来挑战,也对风电场的发电效率、设备安全和收益稳定性造成影响。传统的气象预测和能源管理方法已难以满足高精度、实时响应的需求。而基于人工智能(AI)的大模…...
【web应用】vue3前端框架怎么修改logo?
菜单栏logo修改:src/assets/logo中的图片替换 浏览器栏目logo修改:public文件夹中的icon文件替换...
【Windows】FFmpeg安装教程
FFmpeg 下载与安装指南 下载 FFmpeg 访问 FFmpeg 官网点击页面上的 “Download” 按钮进入下载页面 配置环境变量 将 FFmpeg 的 bin 目录添加到系统环境变量 PATH 中 验证安装 打开 PowerShell输入命令 ffmpeg -version若显示版本信息,则表明安装成功 视频格式检…...
阿里巴巴 MCP 分布式落地实践:快速转换 HSF 到 MCP server
MCP 为资源访问和 Multi Agent 互操作提供了标准化的可能。开源社区目前对 MCP 的生态建设非常火热,mcp.so 已经提供了近 1 万的 mcp server ,其他各种 MCP 生态组件更是层出不穷。AI 大厂们积极拥抱 MCP ,并纷纷提供了自己的 MCP server。对…...
基于阿里云DashScope API构建智能对话指南
背景 公司想对接AI智能体,用于客服系统,经过调研和实施,觉得DashScope 符合需求。 阿里云推出的DashScope灵积模型服务为开发者提供了便捷高效的大模型接入方案。本文将详细介绍如何基于DashScope API构建一个功能完善的智能对话系统&#x…...
RK3588 RGA 测试
RK3588 RGA 测试 一、数据分析总结【由LLM生成】二、考链接三、测试数据四、测试过程4.1 编译librga SDK4.2 运行自带的测试4.3 生成`Resize`测试程序4.4 运行`Resize`测试4.5 遇到的错误一、数据分析总结【由LLM生成】 本次测试针对不同的源图像尺寸、目标图像尺寸和缩放算法…...
【机器学习】集成学习算法及实现过程
一、学习目标 了解什么是集成学习了解机器学习中的两个核⼼任务理解Bagging集成原理理解随机森林构造过程掌握RandomForestClassifier的使⽤掌握boosting集成原理和实现过程理解bagging和boosting集成的区别理解AdaBoost集成原理理解GBDT的算法原理 二、集成学习算法简介 2.…...
Vue:axios(GET请求)
基础 GET 请求 axios.get(https://api.example.com/data).then(response > {console.log(响应数据:, response.data);}).catch(error > {console.error(请求失败:, error);});参数传递方式 axios.get(/api/search, {params: {keyword: vue,page: 1,sort: desc} });// 实…...
iOS工厂模式
iOS工厂模式 文章目录 iOS工厂模式简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)三种模式对比 简单工厂模式(Simple Factory) 定义&am…...
GitHub 趋势日报 (2025年05月21日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1microsoft/WSLLinux的Windows子系统⭐ 1731⭐ 25184C2virattt/ai-hedge-fundA…...
iOS 直播弹幕功能的实现
实现iOS直播弹幕功能需要考虑多个方面,包括弹幕的显示、管理、动画效果以及与直播流的同步。 核心实现方案 1. 弹幕显示视图 class BarrageView: UIView {// 弹道(轨道)数组private var tracks: [CALayer] []// 正在显示的弹幕数组 private var displayingBarra…...
借助Azure AI Foundry 如何打造语音交互新体验
在刚刚落幕的微软创想未来峰会上,Contoso 智能家居的现场演示引发了热议。许多观众在会后留言询问如何回看这场精彩演示。今天,微软为您揭秘 Contoso 如何借助微软最新技术实现智能家居的飞跃式创新。 当语音遇上智能体:用户体验焕然一新 如…...
Spring开发系统时如何实现上传和下载文件
代码如下 值得注意的是上传时候不需要参数servletRequest而下载时候却需要servletResponse,这是为什么呢? 这是因为文件上传时,客户端通过 HTTP POST 请求将文件数据放在 请求体(Body) 中。Spring MVC 对上传过程进行…...
CyberSecAsia专访CertiK首席安全官:区块链行业亟需“安全优先”开发范式
近日,权威网络安全媒体CyberSecAsia发布了对CertiK首席安全官Wang Tielei博士的专访,双方围绕企业在进军区块链领域时所面临的关键安全风险与防御策略展开深入探讨。 Wang博士在采访中指出,跨链桥攻击、智能合约漏洞以及私钥管理不当&#x…...
Android 直播播放器FFmpeg静态库编译实战指南(NDK r21b)
一、环境准备与验证 1.1 必要组件安装 # Ubuntu环境依赖 sudo apt update sudo apt install -y git make automake autoconf libtool pkg-config curl unzip# NDK r21b下载 mkdir -p ~/android && cd ~/android wget https://dl.google.com/android/repository/andro…...
Linux中 I/O 多路复用机制的边缘触发与水平触发
边缘触发(Edge Triggered, ET)与水平触发(Level Triggered, LT) Linux中I/O复用机制epoll -CSDN博客 Linux中的 I/O 复用机制 select-CSDN博客 在 epoll 或其他 I/O 多路复用机制中,触发模式是指如何触发文件描述符…...
01-jenkins学习之旅-window-下载-安装
1 jenkins简介 百度百科介绍:Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 [1] Jenkins官网地址 翻译&…...
实战:Dify智能体+Java=自动化运营工具!
我们在运营某个圈子的时候,可能每天都要将这个圈子的“热门新闻”发送到朋友圈或聊天群里,但依靠传统的实现手段非常耗时耗力,我们通常要先收集热门新闻,再组装要新闻内容,再根据内容设计海报等。 那怎么才能简化并高…...
LInux—shell编程
一、Shell 编程核心特性 解释型语言 无需编译,直接由 bash、sh 等解释器逐行执行。 类似 PHP 的解释执行,不同于 C 的编译型。 系统命令集成 可直接调用 Linux 命令(如 ls、grep、awk),实现系统管理自动化。 与 C/…...
C++028(变量的作用域)
变量的作用域 作用域就是程序中变量的作用范围。局部变量的作用域是局部的,如函数体内;全局变量的作用域则是整个程序。 我们前面接触过的变量基本都是局部变量,这些变量在函数体内声明,无法被其他函数所使用。函数的形参也属于…...
计算机三级数据库免费题库
1.免费题库链接 链接: https://pan.baidu.com/s/1oNpgWmkFePUrCS6G7tfpUQ?pwdb1hg 提取码: b1hg 2.安装教程...
Unity Shader入门(更新中)
参考书籍:UnityShader入门精要(冯乐乐著) 参考视频:Bilibili《Unity Shader 入门精要》 写在前面:前置知识需要一些计算机组成原理、线性代数、Unity的基础 这篇记录一些学历过程中的理解和笔记(更新中&…...
NSSCTF-[陇剑杯 2021]webshell(问6)
下载得到pcap文件 放到Wireshark进行分析 先过滤http contains "1.php"&&http.request.method"POST" 追踪HTTP流 将后面的进行解码 得到flag NSSCTF{192.168.239.123}...
vscode git push 记录
1.先在git上建一个仓库 2.在vscode上登录同一账号 配置好ssh 直接使用 git remote add origin gitgithub.com:18053923230/aiRecipe.git (base) PS D:\gitee\cookbook> git push -u origin master Enter passphrase for key /c/Users/Administrator/.ssh/id_ed25519: …...