在RHEL9.4上启用SFTP服务

FTP存在的不足:

明文传输
  • FTP传输的数据(包括用户名、密码和文件内容)都是明文的,这意味着数据可以被网络上的任何人截获并读取。
  • 没有内置的加密机制,容易受到中间人攻击。
被动模式下的端口问题
  • FTP的被动模式需要开放一系列的高位端口,这些端口可能会被防火墙或NAT设备阻止,导致连接问题。

 SFTP协议

SFTP(SSH File Transfer Protocol 或 Secure File Transfer Protocol)是一种通过 SSH(Secure Shell)协议实现的文件传输协议,旨在提供安全的文件传输和管理功能。它结合了 SSH 的安全性和文件传输协议的功能,是 FTP 的安全替代方案。

SFTP 的特点

安全性
  • 加密传输:所有传输的数据,包括命令、文件内容和用户名、密码,都经过加密,确保数据在传输过程中不被窃听或篡改。
  • 身份验证:使用 SSH 的强大认证机制,包括基于密码和公钥的认证,提供了高安全性的身份验证。
简单的端口配置
  • 单一端口:默认使用 SSH 的端口(22),简化了防火墙和路由器的配置,不需要像 FTP 那样复杂的端口管理。
丰富的功能
  • 文件管理:支持文件的上传、下载、删除、重命名、目录创建等操作。
  • 权限管理:支持文件和目录权限的查看和修改。
  • 断点续传:可以在传输中断后继续传输,适合大文件的传输。

启用SFTP服务

安装OpenSSH:RHEL通常默认安装了OpenSSH。如果没有安装,可以使用以下命令安装。

[root@localhost ~]# dnf install -y openssh-server

启动并配置SSH服务:确保SSH服务已启动并在系统启动时自动启动。

[root@localhost ~]# systemctl start sshd
[root@localhost ~]# systemctl enable sshd

 创建SFTP用户:创建一个新的用户组和用户,并设置密码。

[root@localhost ~]# groupadd sftpusers
[root@localhost ~]#  useradd -m -G sftpusers -s /sbin/nologin sftpuser
[root@localhost ~]# passwd sftpuser
Changing password for user sftpuser.
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.

配置SSH以限制SFTP用户:编辑SSH配置文件 /etc/ssh/sshd_config,添加以下内容来限制SFTP用户的活动范围。

[root@localhost ~]# vim  /etc/ssh/sshd_config添加以下内容;
Match Group sftpusersChrootDirectory /home/%uForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no

保存并关闭文件,然后重启SSH服务:

[root@localhost ~]# systemctl restart sshd

设置目录权限:设置正确的目录权限以确保SFTP用户可以正常使用。

[root@localhost ~]# chown root:root /home/sftpuser
[root@localhost ~]# chmod 755 /home/sftpuser
[root@localhost ~]# mkdir /home/sftpuser/uploads
[root@localhost ~]# chown sftpuser:sftpuser /home/sftpuser/uploads

使用SFTP客户端连接:在客户端,可以使用命令行SFTP工具或图形化SFTP客户端(如FileZilla)进行连接。

连接成功后,可以使用以下常用命令进行文件操作:

ls:列出远程目录内容

cd:切换远程目录

lcd:切换本地目录

get:下载文件

put:上传文件

mkdir:创建远程目录

rmdir:删除远程目录

rm:删除远程文件

exit:退出SFTP会话

基本使用:

从远程服务器下载文件:

get remote_file [local_file]

remote_file:这是必选参数,表示您想要从远程服务器下载的文件路径和文件名。

[local_file]:这是可选参数,表示您希望在本地保存文件的路径和文件名。如果省略此参数,文件将使用远程文件的相同名称下载到当前本地目录。

sftp> get uploads/file.txt
Fetching /uploads/file.txt to file.txt

上传文件到远程服务器:

put local_file [remote_file]

在客户端服务器上创建一个测试文件,通过put上传本地文件到SFTP服务器端;

[root@localhost ~]# touch test_data.csvsftp> put   test_data.csv uploads/
Uploading test_data.csv to /uploads/test_data.csv
test_data.csv                                                                    100%    0     0.0KB/s   00:00 

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

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

相关文章

读人工智能全传12人工智能导致的问题1

1. 人工智能会导致什么问题 1.1. 人工智能是一门通用技术:它的应用仅仅受限于我们的想象 1.1.1. 所有的技术都可能产生意想不到的效果,未来几十年甚至几百年内都存在可能性 1.2. 所有的技术都可能被滥用 1.2.1. 我们的无名氏祖先率先用上了火&#x…

编写商品列表和商品编辑和商品新增页面

addvue <template><!-- 传过来的id --> <!-- {{ $route.query.id }} --> <el-formref"FormRef"style"max-width: 600px":model"FormData":rule"rules"status-iconlabel-width"auto"class"demo-r…

Golang | Leetcode Golang题解之第232题用栈实现队列

题目&#xff1a; 题解&#xff1a; type MyQueue struct {inStack, outStack []int }func Constructor() MyQueue {return MyQueue{} }func (q *MyQueue) Push(x int) {q.inStack append(q.inStack, x) }func (q *MyQueue) in2out() {for len(q.inStack) > 0 {q.outStack…

【web】-sql注入-login

根据网址提示打开如图&#xff1a; 查看源代码前台并没有过滤限制、扫描后台也没有发现特殊文件。看到标题显示flag is in database&#xff0c;尝试sql注入。 由于post,bp抓包如下&#xff1a; 运行python sqlmap.py -r 1.txt --dump 获取flag 42f4ebc342b6ed4af4aadc1ea75f…

昇思25天学习打卡营第20天 | 基于MindNLP+MusicGen生成自己的个性化音乐

基于MindNLPMusicGen生成个性化音乐 实验简介 MusicGen是Meta AI提出的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量音乐。该模型基于Transformer结构&#xff0c;分为三个阶段&#xff1a;文本编码、音频token预测和音频解码。此实验将演示如何使用MindSpo…

搞定ES6同步与异步机制、async/await的使用以及Promise的使用!

文章目录 同步和异步async/awaitPromisePromise的概念 同步和异步 ​ 同步&#xff1a;代码按照编写顺序逐行执行&#xff0c;后续的代码必须等待当前正在执行的代码完成之后才能执行&#xff0c;当遇到耗时的操作&#xff08;如网络请求等&#xff09;时&#xff0c;主线程会…

数据结构(初阶2.顺序表)

文章目录 一、线性表 二、顺序表 2.1 概念和结构 2.2 分类 2.2.1 静态顺序表 2.2.2 动态顺序表 2.3动态顺序表的实现 1.SeqList.h 2.SeqList.c 打印顺序表 初始化 销毁 增容 尾插 头插 在指定位置之前插入数据 尾删 头删 在指定位置删除数据 3.test.c 一、线性表 线性表&#…

如何解决VMware 安装Windows10系统出现Time out EFI Network...

一、问题描述 使用VMware 17 安装windows10出现如下图所示Time out EFI Network… Windows10镜像为微软官方下载的ISO格式镜像&#xff1b; 二、问题分析 VMware 17 默认的固件类型是UEFI(E)&#xff0c;而微软官网下载的Windows10 ISO格式镜像不支持UEFI(E)&#xff0c;支…

【中项第三版】系统集成项目管理工程师 | 第 4 章 信息系统架构④ | 4.7

前言 第4章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于技术相关的内容&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 4.7 安全架构 4.7.1 安全威胁 4.7.2 定义与范围 4.7.3 整体架构设计 4.7.4 网络安全架构设计 4.7.5 数据库系统安…

C++基础语法:STL之迭代器

前言 "打牢基础,万事不愁" .C的基础语法的学习 引入 C基础:STL概述-CSDN博客 上一篇梳理了一些同STL有关的概念.同时对理解迭代器需要的类包含,内部类,链表等内容做了分析,这篇从<C Prime Plus> 6th Edition(以下称"本书")的P684,大标题16.4泛型编…

C++继承和多态

目录 继承 继承的意义 访问限定符、继承方式 赋值兼容规则&#xff08;切片&#xff09; 子类的默认成员函数 多继承 继承is a和组合has a 多态 什么是多态 形成多态的条件 函数重载&#xff0c;隐藏&#xff0c;重写的区别 override和final 多态原理 继承 继承的…

Algorithms,最全的Python算法仓库!

学习编程、学习Python最好的方式就是练习&#xff0c;哪怕是新手&#xff0c;只要不断地敲代码输出&#xff0c;肯定会有神效。 Python的练手项目很多&#xff0c;特别是Github上&#xff0c;建议不管新手、老司机都去看看。 这里推荐给大家一个Gitthub上练习的项目&#xff…

[C++]——同步异步日志系统(5)

同步异步日志系统 一、日志消息格式化设计1.1 格式化子项类的定义和实现1.2 格式化类的定义和实现 二、日志落地类设计2.1 日志落地模块功能实现与测试2.2 日志落地模块功能功能扩展 一、日志消息格式化设计 日志格式化模块的作用&#xff1a;对日志消息进行格式化&#xff0c…

深度学习工具和资源推荐:全面指南

今天我们来聊聊深度学习的工具和资源。要学好深度学习&#xff0c;除了理论知识&#xff0c;还需要掌握一些强大的工具和找到好的资源。以下是我在学习过程中发现的一些非常有用的工具和资源&#xff0c;希望对你们有帮助。 目录 工具推荐 1. Python编程语言 2. TensorFlow…

接口测试返回参数的自动化对比!

引言 在现代软件开发过程中&#xff0c;接口测试是验证系统功能正确性和稳定性的核心环节。接口返回参数的对比不仅是确保接口功能实现的手段&#xff0c;也是测试过程中常见且重要的任务。为了提高对比的效率和准确性&#xff0c;我们可以通过自动化手段实现这一过程。本文将…

WGCLOUD登录页面支持输入验证码吗

支持的 v3.5.3版本开始&#xff0c;WGCLOUD支持在登录页面配置输入验证码&#xff0c;我们可以根据自己的场景需要&#xff0c;配置是否在登录页面显示验证码&#xff0c;如下说明 登录页面添加验证码说明 - WGCLOUD

[超级详细系列]ubuntu22.04配置深度学习环境(显卡驱动+CUDA+cuDNN+Pytorch)--[3]安装cuDNN与Pytorch

本次配置过程的三篇博文分享分别为为&#xff1a; [超级详细系列]ubuntu22.04配置深度学习环境(显卡驱动CUDAcuDNNPytorch)--[1]安装显卡驱动 [超级详细系列]ubuntu22.04配置深度学习环境(显卡驱动CUDAcuDNNPytorch)--[2]安装Anaconda与CUDA [超级详细系列]ubuntu22.04配置深…

Web学习day04

mybatis 目录 mybatis 文章目录 一、查询 1.1结果映射 1.2多条件查询 1.3模糊查询 二、XML 书写规范 三、动态SQL 四、配置文件 4.1settings标签 4.2mappers标签 4.3environments标签 五、案例 5.1数据表 5.2实现类 5.3mapper实现 5.4工具类实现 5.5XML动态…

Python应用 | 基于flask-restful+AntDesignVue实现的一套图书管理系统

本文将分享个人自主开发的一套图书管理系统&#xff0c;后端基于Python语言&#xff0c;采用flask-restful开发后端接口&#xff0c;前端采用VueAntDesignVue实现。对其他类似系统的实现&#xff0c;比如学生管理系统等也有一定的参考作用。有问题欢迎留言讨论~ 关注公众号&am…

记一下blender曲线阵列

先说一下如何正常使用这个 这一次我是用来贴瓷砖 随便创建一个mesh 然后添加一个阵列修改器&#xff0c;然后再给他添加一个curve修改器&#xff0c;使用constant offset去偏移他 这里有个小细节 我第一次创建的curve 我选取之后&#xff0c;死活无法沿着曲线阵列&#xff…