Linux搭建SFTP服务器

案例:搭建SFTP服务器

SFTP(SSH文件传输协议)

SFTP(SSH文件传输协议)是一种安全的文件传输协议,用于在计算机之间传输文件。它基于SSH(安全外壳协议)的子系统,提供了加密的、可靠的数据传输通道,用于在客户端和服务器之间安全地传输文件。

SFTP的特点:
  1. 安全性: SFTP通过SSH协议进行数据传输,使用了加密和身份验证机制,因此提供了高度的安全性,能够有效防止数据被窃听和篡改。
  2. 功能丰富: SFTP支持文件上传、下载、删除、重命名等文件操作,同时还支持文件夹的创建和管理,提供了丰富的功能以满足各种文件传输需求。
  3. 跨平台性: SFTP是一种标准化的协议,可以在多种操作系统上使用,包括Linux、Windows、macOS等,因此非常灵活和通用。
  4. 灵活性: SFTP允许用户使用多种客户端工具进行文件传输,包括命令行工具、图形界面工具以及基于Web的工具,使得用户可以根据自己的偏好选择合适的工具进行操作。
SFTP的应用场景:
  1. 远程服务器管理: 系统管理员可以使用SFTP来管理远程服务器,例如上传、下载和更新文件,进行日志文件的查看和分析等操作。
  2. 网站维护: 网站管理员可以使用SFTP来上传和下载网站文件,更新网站内容,管理网站的静态资源和动态脚本文件等。
  3. 备份和恢复: 用户可以使用SFTP来进行文件备份和恢复操作,将重要数据备份到远程服务器上,以防止本地数据丢失或损坏。
  4. 文件共享: 团队成员可以使用SFTP来共享文件和资源,进行协作编辑和版本控制,保持团队之间的工作同步和一致。

下面我们来在Linux中搭建一台SFTP服务器

步骤序号步骤描述
1安装OpenSSH服务器软件包
2配置SSH服务,启用SFTP子系统
3创建SFTP用户组
4创建SFTP用户,设置家目录和访问权限
5重启SSH服务使配置生效
6测试SFTP连接,确认服务器能够接受SFTP客户端的连接

1、创建用户组

在搭建SFTP服务器时创建用户组是为了更好地管理和控制用户的访问权限。简单来说,通过创建用户组,你可以将具有相似权限和访问需求的用户组织在一起,并轻松地为他们设置统一的文件访问权限和限制。这样可以更有效地管理SFTP服务器的安全性,并确保只有授权用户能够访问和传输文件。

# 创建一个新的用户组,用于管理SFTP用户。	
groupadd GWSFTP

2、创建用户

创建用户是为了允许特定的个体或实体通过SFTP协议访问服务器并进行文件传输。单独设置用户还有以下好处

  1. 身份验证:每个用户都有自己的用户名和密码,这样可以确保只有授权的用户能够访问服务器。
  2. 访问控制:可以根据每个用户的需求和角色设置不同的访问权限,限制其对文件系统的访问范围,从而确保安全性。
  3. 跟踪和管理:通过用户账户,管理员可以追踪每个用户的活动,包括登录时间、文件传输记录等,并对用户进行管理和监控。
  4. 个性化配置:每个用户可以有自己的配置文件、家目录和设置,这样可以根据用户的需要进行个性化定制。
# 创建一个新的SFTP用户,并将其添加到 GWSFTP 组中。
useradd -m -G GWSFTP -s /bin/false hrfan_sftp# 为用户设置密码
passwd hrfan_sftp
# -m 选项表示创建用户的主目录,如果不存在则会自动创建。
# -G GWSFTP选项表示将新用户添加到GWSFTP组中。
# -s /bin/false选项表示指定用户的登录shell为/bin/false,这意味着该用户无法登录到系统。
# hrfan_sftp是新创建的用户名。

3、设置SFPT目录

单独设置SFTP目录是为了限制用户的访问范围,提高服务器的安全性。具体来说, 还有以下几点优点

  1. 限制访问范围:将用户限制在特定的目录下,可以防止其访问服务器上的其他敏感文件和目录,降低了潜在的安全风险。
  2. 减少误操作:用户只能在其指定的目录下进行操作,减少了意外删除或修改其他重要文件的风险。
  3. 简化权限管理:通过单独设置SFTP目录,管理员可以更轻松地管理用户的访问权限,而不必担心用户越权访问其他目录。
  4. 提高隔离性:将不同用户的文件隔离在不同的目录下,有助于提高文件的隔离性,减少因用户错误操作或恶意行为而造成的影响范围。
# 设置SFTP的文件目录,可以执行以下操作最好按照上面的思路来,否则可能连不上SFTP服务器:首先建立file目录,他的拥有者必须是root,并且其他用户不能拥有写入的权限(ChrootDirectory 这个选项要求的),即权限不能超过755(否则连不上)很明显,这样,我们使用SFTP用户登录就只能进行下载操作,无法上传文件;所以在/file/IN目录下建一个用于上传和下载的目录,他的拥有者可以是SFTP用户,可以无限制操作该目录下的文件;
# 创建SFTP用户目录文件
mkdir /file
# 分配文件所属的组 
chown root:GWSFTP  /file
# 修改权限
chmod 755 /file
# 创建专属用户的文件
mkdir -p /file/IN
chown hrfan_sftp:GWSFTP /file/IN
chmod 755 /file/IN

4、修改服务器的SFTP配置

# 编辑/etc/ssh/sshd_config文件,注释其中的Subsystem sftp /usr/libexec/openssh/sftp-server,然后新增配置如下:
# 我的SFTP配置
Subsystem sftp internal-sftp  # SFTP子系统使用内置的SFTP服务器
Match Group GWSFTP            # 以下配置仅适用于属于该组的用户
ChrootDirectory /file         # 目录限制
ForceCommand internal-sftp    # 强制用户使用内置的SFTP服务器进行会话,而不允许执行其他命令
AllowTcpForwarding no         # 禁止TCP转发
X11Forwarding no              # 禁止X11转发

5、检查配置是否正确

sshd -t# 重启 sshd
systemctl restart sshd

6、修改端口

# 如果使用的是 firewall-cmdfirewall-cmd --permanent --zone=public --add-port=5678/tcp
# 需要先开启防火墙端口firewall-cmd --reload
# 修改 /etc/ssh/sshd_config文件 注释进行修改 Port 5678
# 查询sftp连接日志 tail -f /var/log/auth.log

7.测试是否连接成功

image-20240302192258177

image-20240302192242501

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

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

相关文章

1908_Arm Cortex-M3的实现

1908_Arm Cortex-M3的实现 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 这是第一次看一份这样的手册,之前的MCU编程基本上就是专注于软件接口方面。而OS等方面的一些功能基本上都是用了现成的解决方案,因此也就没有过多的关注…

git合并多次提交

简介 Git是一个分布式版本控制系统,它允许开发人员在不同的分支上进行并行开发,并将这些分支合并到主分支或其他分支中。在开发过程中,我们经常会创建多个commit来记录每次的代码变更。有时候我们希望将这些连续的commit合并为一个更有意义的…

CSS实现选中卡片样式操作

图一默认自动选中&#xff0c;并且不可取消选中&#xff0c;当选择其他卡片才可点击下一步 在 “ src/assets ” 路径下存放 save.png&#xff0c;代表选中的状态 <div class"cards"><ul class"container"><li v-for"image in image…

【前端系列】vue

这里写目录标题 一、Vue简介1.1 主流前端框架/库简介 二、下载和安装Vue2.1 下载2.2 安装完成后&#xff0c;检查2.3创建全局安装目录和缓存日志目录2.4 为了下载包快速&#xff0c;改源为淘宝镜像2.5 查看npm配置修改是否成功 三、配置环境变量环境变量—用户变量—选中Path—…

进程间通信 --->信号灯

有名信号量: 1.创建 semget int semget(key_t key, int nsems, int semflg); 功能: 创建一组信号量 参数: key:IPC对象名 nsems:信号量的个数 semflg:IPC_CREAT 返回值: …

Vue+SpringBoot打造实验报告管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验管理模块2.2 实验实例模块2.3 实验批阅模块2.4 实验咨询模块 三、系统展示四、核心代码4.1 查询实验4.2 新增实验咨询4.3 回复实验咨询4.4 新增实验实例4.5 查询实验实例 五、免责说明 一、摘要 1.1 项目介绍 基于…

【学习笔记】卫星基础知识

一、什么是卫星以及它如何工作&#xff1f; 通信卫星是一种人造卫星&#xff0c;通过使用转发器在源和接收器之间中继和放大无线电电信信号。卫星的工作原理是接收从地球发送的无线电信号并将无线电信号重新发送回地球。卫星使用从大型太阳能电池阵列收集的太阳能&#xff0c;…

Java面试题【必知必会】基础(2024)

近期一直在准备面试&#xff0c;所以为了巩固知识&#xff0c;也为了梳理&#xff0c;整理了一些java的基础面试题&#xff01;同时也希望各位英雄和女侠能够补充&#xff01;不胜荣幸&#xff01;&#xff01;&#xff01; 1. Final 有什么用&#xff1f; final 的意思是最后…

HTML标签分类,web微信开发者工具

第一个阶段&#xff0c;开发环境和工具准备 浏览器 &#xff08;Google&#xff0c;FireFox&#xff0c;…&#xff09;下载&#xff0c;安装前端开发工具vscode&#xff0c;下载、安装 node、npm、webpack、webpack-cli、cnpm&#xff0c;配置前端开发环境下载、配置PHP和MyS…

计算机常用的单位以及换算

通常买电脑时候&#xff0c;或者手机的时候&#xff0c;通常会问多大内存&#xff1f; 但是实际你了解内存如何换算吗&#xff1f; 内存可以是1G&#xff0c;2G&#xff0c;4G&#xff0c;等等 首先注意&#xff0c;单位不区分大小写&#xff0c;所以1GB 1Gb 1gB都是相同的。…

Centos安装Jenkins

1、更新系统 &#xff08;1&#xff09;更新下系统 sudo yum -y update 安装用于下载java 17二进制文件的wget命令行工具 sudo yum -y install wget vim 2、卸载centos自带的jdk 由于我们安装的版本比较高&#xff0c;需要jdk17&#xff0c;卸载centos自带的jdk。用 下面的…

软件为什么要做软件测试

软件要做测试的原因在于以下几个关键点&#xff1a; 发现和修复错误&#xff1a;软件测试的首要目的是识别并修复代码中的错误、缺陷或漏洞。这些错误可能导致程序崩溃、数据丢失、功能异常等&#xff0c;影响软件的正常运行。 保证质量与可靠性&#xff1a;通过系统性的测试活…

【vue/组件封装】封装一个带条件筛选的搜索框组件(多组条件思路、可多选)详细流程

引入&#xff1a;实现一个带有筛选功能的搜索框&#xff0c;封装成组件&#xff1b; 搜索框长这样子&#xff1a; 点击右侧筛选图标后弹出层&#xff0c;长这样子&#xff1a; 实际应用中有多组筛选条件&#xff0c;这里为了举栗子就展示一组&#xff1b; 预览&#xff1a;…

POST 请求,Ajax 与 cookie

POST 请求则需要设置RequestHeader告诉后台传递内容的编码方式以及在 send 方法里传入对应的值 xhr.open("POST", url, true); xhr.setRequestHeader(("Content-Type": "application/x-www-form-urlencoded")); xhr.send("key1value1&…

07-prometheus的自定义监控-pushgateway工具组件

一、概述 pushgateway用于自定义监控节点、节点中服务的工具&#xff0c;用户可以通过自定义的命令获取数据&#xff0c;并将数据推送给pushgateway中&#xff1b; prometheus服务&#xff0c;从pushgateway中获取监控数据&#xff1b; 二、部署pushgateway 我们可以“随便”找…

微服务高性能通信技术-gRPC实战落地

在微服务架构中&#xff0c;服务之间的通信是至关重要的。为了实现高性能、低延迟和跨语言的服务间通信&#xff0c;gRPC是一个流行的选择。gRPC是一个开源的、高性能的、通用的RPC&#xff08;远程过程调用&#xff09;框架&#xff0c;基于HTTP/2协议和Protocol Buffers序列化…

Pytorch学习 day03(Tensorboard、Transforms)

Tensorboard Tensorboard能够可视化loss的变化过程&#xff0c;便于我们查看模型的训练状态&#xff0c;也能查看模型当前的输入和输出结果 在Pycharm中&#xff0c;可以通过按住ctrl&#xff0c;并左键点击某个库来进入源文件查看该库的使用方法SummaryWriter是用来向log_dir…

文件上传到oss上以及下载

<template><!-- 批量渠道变更 --><div><div style"margin-bottom: 10px; display: flex;"><Download name"下载模板" type"Url" url"https://file.wonder-link.net/%E6%89%B9%E9%87%8F%E6%B8%A0%E9%81%93%E5%8F…

140 Linux 系统编程17 ,进程组,会话,创建会话,守护进程

1. 进程组&#xff0c;也称之为作业。代表一个或多个进程的集合。 每个进程都属于一个进程组。在waitpid函数和kill函数的参数中都曾使用到。操作系统设计的进程组的概念&#xff0c;是为了简化对多个进程的管理。 当父进程&#xff0c;创建子进程的时候&#xff0c;默认子进程…

【数据结构】顺序表+链表

目录 1.顺序表 1.1初始化顺序表 1.2销毁顺序表 1.3检查容量并扩容 1.4把某个元素插入到下标为pos的位置 1.5头插和尾插 1.6删除下标为pos的元素 1.7头删和尾删 2.顺序表的问题及思考 3.链表 3.1链表的访问 3.2链表的增删查改 1.顺序表 顺序表的本质其实就是一个数组…