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

文件存储服务系统(File Storage Service System)-02-SFTP 协议介绍

文件服务系列

文件存储服务系统(File Storage Service System)-00-文件服务器是什么?为什么需要?

文件存储服务系统(File Storage Service System)-01-常见的文件协议介绍

文件系统 FTP Ubuntu 安装入门介绍

文件存储服务系统(File Storage Service System)-02-SFTP 协议介绍

分布式文件服务系统(Distributed File System, DFS)-00-分布式文件服务系统是什么?

分布式存储系统-01-minio 入门介绍

分布式存储系统-02-开源的分布式文件系统 Fastdfs 安装入门介绍

分布式存储系统-03-ceph 一个可扩展的分布式存储系统介绍

分布式存储系统-04-GlusterFS 是一个基于对象的开源分布式文件系统,适用于云存储和媒体流等场景

分布式存储系统-05-Lustre 是一个高性能的分布式文件系统,主要用于大型超级计算机集群

分布式存储系统-06-MooseFS 是一个开源的分布式文件系统,设计用于提供高可靠性和扩展性

分布式存储系统-07-OpenAFS 是 Andrew File System 的开源实现,是一个分布式网络文件系统

分布式存储系统-08-OrangeFS 是 PVFS 的下一代版本,是一个面向高性能计算的开源并行文件系统

SFTP 文件协议是什么

SFTP(SSH File Transfer Protocol)是一种用于通过安全通道传输文件的网络协议。

它作为 SSH(Secure Shell)协议的一部分,提供了安全的文件访问、传输和管理功能。以下是对 SFTP 文件协议的详细介绍:

SFTP 协议概述

工作原理

SFTP 是基于 SSH 协议的文件传输协议,通过加密的 SSH 连接提供文件传输服务。

它不同于传统的 FTP 和 FTPS 协议,不使用独立的传输通道,而是完全依赖于 SSH 通道。

连接和认证
  • 连接:SFTP 使用标准的 SSH 端口(默认是 22)进行通信。客户端通过 SSH 连接到服务器,并在建立连接后启动 SFTP 子系统。
  • 认证:SFTP 继承了 SSH 的认证机制,支持基于密码、SSH 密钥和其他 SSH 认证方法。

SFTP 命令和操作

SFTP 支持一组文件操作命令,以下是一些常见的命令:

  • ls / dir:列出目录内容。
  • cd:改变当前工作目录。
  • pwd:显示当前工作目录。
  • get:下载文件。
  • put:上传文件。
  • rm:删除文件。
  • mkdir:创建目录。
  • rmdir:删除目录。
  • rename:重命名文件或目录。
  • chmod:改变文件权限。
  • chown:改变文件所有者。

这些命令在 SFTP 客户端中执行,通常是交互式命令行界面或图形用户界面(GUI)。

安全性

加密和数据完整性
  • 加密:SFTP 通过 SSH 加密传输的数据,确保数据在传输过程中不被窃听或篡改。
  • 数据完整性:SSH 协议提供数据完整性校验,确保数据在传输过程中未被修改。
认证
  • 密码认证:用户通过用户名和密码进行认证。
  • 公钥认证:用户通过 SSH 密钥对进行认证,提供更高的安全性。
  • 双因素认证:一些实现支持双因素认证,如密码+SSH 密钥或密码+一次性密码(OTP)。

SFTP 的优缺点

优点
  • 安全性高:通过 SSH 加密和认证,提供了高安全性的数据传输。
  • 易用性:与 FTP 类似的命令和操作,易于使用。
  • 防火墙友好:使用单一端口(通常是 22),比 FTP 的主动和被动模式更防火墙友好。
  • 功能丰富:支持文件的全面管理操作,如权限修改、文件重命名等。
缺点
  • 性能:由于加密和认证过程,可能比未加密的 FTP 传输速度稍慢。
  • 依赖 SSH:需要 SSH 服务的支持,如果环境中没有 SSH 服务,SFTP 无法使用。

使用场景

  • 安全文件传输:在需要确保数据传输安全的场景中使用,如远程备份、机密数据传输等。
  • 远程文件管理:通过 SFTP 管理远程服务器上的文件,适合系统管理员和开发人员。
  • 替代 FTP:在需要替代不安全的 FTP 协议的场景中使用。

SFTP 工具

SFTP 客户端
  • FileZilla:跨平台的图形化 SFTP 客户端。
  • WinSCP:Windows 平台下的 SFTP 客户端,支持图形界面和脚本。
  • Cyberduck:支持 SFTP 的开源文件传输客户端,适用于 macOS 和 Windows。
  • OpenSSH:提供命令行 SFTP 客户端,适用于大多数类 UNIX 系统。
SFTP 服务器
  • OpenSSH:大多数 UNIX 和 Linux 系统默认安装的 SSH 服务,包含 SFTP 支持。
  • Bitvise SSH Server:Windows 平台下的商业 SSH 和 SFTP 服务器。
  • ProFTPD:FTP 服务器软件,支持 SFTP 模块。

为什么需要 SFTP 协议?和 FTP 有什么区别

SFTP(SSH File Transfer Protocol)是为了提供安全的文件传输而设计的,它解决了传统 FTP 存在的诸多安全性问题。

以下是 SFTP 相对于 FTP 的主要优点和两者的关键区别:

为什么需要 SFTP 协议

  1. 安全性

    • 加密传输:SFTP 使用 SSH 加密所有数据传输,包括文件数据和命令。这防止了数据在传输过程中被窃听和篡改。
    • 认证机制:SFTP 支持基于 SSH 密钥的认证,提供了比简单的用户名和密码更强的安全性。
  2. 数据完整性

    • 完整性校验:SSH 协议提供数据完整性校验,确保数据在传输过程中未被修改。
  3. 防火墙友好

    • 单一端口:SFTP 使用 SSH 的默认端口(通常是 22)进行通信,这比 FTP 的主动模式和被动模式更容易穿过防火墙。
  4. 统一连接

    • 单一连接:SFTP 使用单一的 SSH 连接进行控制命令和数据传输,而 FTP 需要分别建立控制连接和数据连接。

SFTP 与 FTP 的主要区别

特性FTPSFTP
安全性不加密,数据和命令以明文传输使用 SSH 加密,数据和命令安全传输
认证方式用户名和密码用户名和密码、SSH 密钥、多种认证方式
传输端口控制连接使用端口 21,数据连接使用动态端口控制和数据传输均使用 SSH 端口(默认 22)
传输模式主动模式和被动模式,可能受防火墙限制单一连接,防火墙友好
数据完整性无内置机制,依赖底层协议SSH 提供数据完整性校验
文件操作命令类似,但不完全相同类似,但通过 SSH 通道传输
实现复杂性实现相对简单,但安全性差实现较为复杂,但提供高安全性

详细对比

安全性
  • FTP:FTP 在设计时没有考虑安全性,所有数据(包括用户名和密码)都以明文形式传输,这使其容易受到中间人攻击和数据窃听。
  • SFTP:SFTP 通过 SSH 加密所有传输的数据,确保数据在传输过程中不会被窃听或篡改。此外,SFTP 支持基于 SSH 密钥的认证,进一步提高了安全性。
数据完整性
  • FTP:FTP 没有内置的数据完整性检查机制,传输过程中数据可能被篡改而不被检测到。
  • SFTP:SFTP 使用 SSH 提供的数据完整性校验,确保传输的数据未被修改。
传输端口和防火墙
  • FTP:FTP 使用两个端口,控制连接使用端口 21,数据连接使用动态分配的端口。这种设计在防火墙配置上可能遇到困难,因为需要同时开放多个端口。
  • SFTP:SFTP 仅使用一个端口(默认是 22),所有的控制和数据传输都通过这个端口进行。这使得 SFTP 更加防火墙友好,简化了防火墙的配置。
传输模式
  • FTP:FTP 有主动模式和被动模式。主动模式要求服务器连接客户端指定的端口,这可能被客户端防火墙阻止;被动模式要求客户端连接服务器指定的端口,这可能被服务器防火墙阻止。
  • SFTP:SFTP 通过单一的 SSH 连接进行所有数据传输,不需要额外的端口,避免了 FTP 在传输模式上的复杂性和防火墙问题。
实现复杂性和使用场景
  • FTP:FTP 实现相对简单,但由于缺乏安全性,通常需要通过其他方式(如 VPN)来保证数据传输的安全。
  • SFTP:SFTP 实现较为复杂,但其内置的安全性使其成为传输敏感数据的首选。SFTP 常用于需要高安全性的数据传输场景,如远程备份、企业文件传输和系统管理等。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【从零开始一步步学习VSOA开发】开发环境搭建
  • 谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询
  • CTFSHOW 萌新 web10 解题思路和方法(passthru执行命令)
  • 如何获取和安装SSL证书
  • PHP反序列化漏洞从入门到深入8k图文介绍,以及phar伪协议的利用
  • C#类和结构体的区别
  • 2.MySQL库的操作
  • C++ 智能指针简单介绍及用法
  • 微调(二)
  • Java与Python谁更适合后端开发?
  • 计算机网络-七层协议栈介绍
  • Qt pdf文件操作
  • 学习记录day18——数据结构 算法
  • Hadoop学习(三)
  • AI PC处理器架-低功耗、NPU算力、大模型
  • C++入门教程(10):for 语句
  • JS专题之继承
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Phpstorm怎样批量删除空行?
  • Python 基础起步 (十) 什么叫函数?
  • ReactNative开发常用的三方模块
  • Redis中的lru算法实现
  • TCP拥塞控制
  • vue-router 实现分析
  • 从0到1:PostCSS 插件开发最佳实践
  • 分布式熔断降级平台aegis
  • 规范化安全开发 KOA 手脚架
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 如何选择开源的机器学习框架?
  • 数组大概知多少
  • 我有几个粽子,和一个故事
  • ​Python 3 新特性:类型注解
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • # 职场生活之道:善于团结
  • $.ajax()参数及用法
  • (35)远程识别(又称无人机识别)(二)
  • (4) PIVOT 和 UPIVOT 的使用
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C++20) consteval立即函数
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (LeetCode C++)盛最多水的容器
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)程序员疫苗:代码注入
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET C# 配置 Options
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net Redis的秒杀Dome和异步执行