SSH、FTP、SFTP相关协议详解
一、SSH
1、定义
SSH(Secure Shell)是一种网络协议,用于加密方式远程登录到另一台计算机上,并执行命令或程序。SSH由IETF的网络小组(Network Working Group)所制定,是建立在应用层基础上的安全协议。
2、特点
- 加密性:SSH通过加密技术处理所有传输的数据,确保数据传输的安全性,有效防止远程管理过程中的信息泄露问题。
- 认证机制:SSH支持多种认证方式,如密码认证和密钥认证,增强了安全性。
- 灵活性:SSH不仅可以用于远程登录,还可以用于执行远程命令、传输文件(通过SCP或SFTP)等,同时支持端口转发、X11转发等功能。
3、应用
SSH服务主要提供两个服务功能:一个是提供类似telnet远程联机服务器的服务;另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务。所以SSH服务本身就可以提供SFTP服务。
二、FTP
1、定义
FTP(File Transfer Protocol)是一种用于在两台装有不同操作系统的机器之间传输计算机文件的协议。它属于网络协议组的应用层,是一个8位的客户端-服务器协议。工作在OSI网络模型的第七层---应用层,使用TCP传输。
FTP是基于客户--服务器(CS)模型设计的,ftp客户端发起会话,与ftp服务器建立连接。FTP会话期间要建立建立两个连接:控制连接和数据连接。控制连接一般使用21端口,主要用户传送命令和响应等控制信息,在整个交互过程中始终处于连接状态;数据连接一般使用服务器的20端口,只在每一次文件传送时打开,数据传送完成后则会关闭。当控制连接撤销时,FTP会话结束。
2、特点:
- 非加密性:FTP传输的数据是明文传输,存在安全风险,不适合传输敏感信息。
- 灵活性:FTP支持多种文件类型和传输模式(主动模式和被动模式),能操作任何类型的文件而不需要进一步处理。
- 延时性:FTP有着较高的延时,从开始请求到第一次接收需求数据之间的时间可能会非常长,并且需要执行冗长的登录进程。
1、FTP支持的模式
Standard(PORT方式、主动模式)、Passive(PASV、被动模式)
- 主动模式:
FTP客户端首先与服务器的TCP21端口建立控制连接,用来发送控令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器通过自己的TCP20端口连接至客户端的指定端口发送数据。
- 被动模式:
被动模式下控制连接与主动模式是一致的,不同的是控制连接建立后会发送PASV命令,服务器收到PASV命令后,打开一个临时端口并且通知客户端,客户端连接至ftp的此端口,然后ftp服务器通过这个端口传送数据。
总结:主动与被动是针对FTP服务器而言的,主动模式下,FTP服务器使用20端口主动连接客户端的指定端口。被动模式下,FTP服务器告知客户端自己要使用的端口,然后等待客户端的连接。
2、匿名FTP
一般情况下如果想与一台ftp服务器进行文件传输,需要有该服务器的授权,即使用该服务器的注册用户进行登录后,才能传输文件。而这种情况违背了互联网的开放性,互联网上的FTP服务器成千上万,不可能要求每个用户在每台FTP服务器上都拥有帐号。
匿名FTP是这样一种机制,用户可通过它连接到远程FTP服务器上,进行文件的上传或下载,而不需要成为其注册用户。系统管理员建立一个特殊的用户帐号(匿名帐号),一般名为anonymous或ftp,互联网上的任何人在任何地方都可使用该用户的帐号。
通过FTP程序连接匿名FTP服务器的方式同连接普通FTP服务器的方式类似,只是在要求提供用户帐号时必须输入anonymous或ftp,而该用户帐号的口令可以是任意的字符。
当远程服务器提供匿名FTP服务时,会预先指定某些目录及文件向公众开放,允许匿名用户的存取,而系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP服务器都只允许用户下载文件,而不允许用户上传文件。
3、应用
FTP主要用于文件传输,包括文件的上传和下载。然而,由于其非加密性,FTP在安全性要求较高的场合逐渐被SFTP等更安全的协议所替代。
三、SFTP
1、定义
SFTP(SSH File Transfer Protocol)是一种基于SSH(安全外壳)的安全的文件传输协议。SFTP使用SSH的加密和认证机制来确保文件传输的安全性。
2、特点
- 安全性:SFTP继承了SSH的加密和认证机制,所有数据在传输过程中都被加密,有效防止了传输过程中的威胁和攻击。
- 兼容性:SFTP的命令行接口与FTP类似,使得熟悉FTP的用户可以很容易地切换到SFTP。
- 高效性:虽然SFTP在加密和解密过程中会增加一些计算开销,但总体来说,其传输效率仍然很高。
3、应用
SFTP广泛应用于需要安全传输文件的场景,如远程备份、网站文件更新等。
四、VSFTP
1、定义
VSFTP(Very Secure FTP)是Linux服务器上的一款使用FTP协议的软件,是Linux上使用最广泛的FTP服务端软件之一。VSFTP专注于提供安全、可靠的FTP服务。
2、特点
- 安全性:VSFTP通过配置可以实现多种安全特性,如限制用户登录、限制用户访问目录等。
- 易用性:VSFTP的配置文件相对简单易懂,方便管理员进行配置和管理。
- 高效性:VSFTP针对FTP协议进行了优化,提高了文件传输的效率。
3、应用
VSFTP广泛应用于Linux服务器上的文件传输服务,特别是在需要提供匿名FTP服务的场合。
综上所述,SSH、FTP、SFTP、VSFTP各自具有不同的特点和应用场景。SSH和SFTP更侧重于数据传输的安全性,而FTP和VSFTP则更侧重于文件传输的便捷性和高效性。在选择使用哪种协议或软件时,应根据具体的安全需求和性能要求来决定。
五、常见面试题
针对SSH、SFTP、VSFTP的常见面试题,以下是一些可能的问题及其详细回答:
SSH常见面试题
- SSH服务器的默认端口和配置文件是什么?
- 默认端口:22
- 配置文件:
/etc/ssh/sshd_config
- 修改说明:编辑
/etc/ssh/sshd_config
文件,更改参数“Port 22”的值,然后重新启动ssh服务。
- 如何禁用SSH的root登录?
- 编辑
/etc/ssh/sshd_config
文件,将“PermitRootLogin yes”更改为“PermitRootLogin no”,然后重新启动ssh服务。
- 编辑
- 如何只允许特定的用户通过SSH访问Linux服务器?
- 编辑
/etc/ssh/sshd_config
文件,添加“AllowUsers user1 user2”参数(其中user1和user2是允许的用户名),然后重新启动ssh服务。
- 编辑
- SSH端口转发(隧道)如何设置?
- 使用语法:
ssh -L localport:host:hostport user@ssh_server -N
- 参数说明:
-L
:端口转发参数localport
:本地端口host
:具有要转发的端口的服务器hostport
:远程端口-N
:不要执行远程命令user
:具有访问ssh服务器权限的用户ssh_server
:将用于转发的ssh服务器
- 使用语法:
- SSH与Telnet的主要区别是什么?
- SSH通信是加密的,而Telnet通信是明文的。
- SSH使用公钥进行身份验证,而Telnet不使用任何身份验证。
- SSH默认端口是22,Telnet默认端口是23。
SFTP常见面试题
- SFTP是什么?它与FTP有什么区别?
- SFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议。
- 主要区别:
- 安全性:SFTP通过加密传输数据,而FTP传输的数据是明文的。
- 端口号:SFTP使用SSH的默认端口22,FTP使用默认端口21。
- 如何建立SFTP连接?
- 选择SFTP客户端工具(如FileZilla、WinSCP等)。
- 在客户端中输入服务器地址、端口号(默认为22)、用户名和密码。
- 连接到服务器后,进行文件传输和管理。
- SFTP如何进行身份验证?
- 可以使用用户名和密码、SSH密钥等多种身份验证方法。
- SFTP的优点有哪些?
- 安全性高,通过加密传输数据。
- 平台无关性,可以在不同操作系统上使用。
- 可靠性高,具有失败重试功能。
- 高效性,使用压缩算法和流传输提高传输效率。
VSFTP常见面试题
- VSFTP是什么?
- VSFTP(Very Secure FTP Daemon)是一种在Linux系统上广泛使用的FTP服务器软件,强调安全性。
- 如何检测是否安装了VSFTP?
- 在Linux系统中,可以使用包管理器命令来检测是否安装了VSFTP。
rpm -q vsftpd或者 apt list --installed | grep vsftpd
- 在Linux系统中,可以使用包管理器命令来检测是否安装了VSFTP。
- 如何配置VSFTP以允许匿名用户上传文件?
- 修改
/etc/vsftpd/vsftpd.conf
文件,确保以下选项被正确设置:anonymous_enable=YES
:允许匿名登录。write_enable=YES
:允许写操作(包括上传)。anon_upload_enable=YES
:允许匿名用户上传文件。- 设置一个匿名用户可写的目录,并指定该目录为匿名用户的根目录(如
anon_root=/path/to/directory
)。
- 重启VSFTP服务以应用更改。
- 修改
- VSFTP的日志文件在哪里?
- VSFTP的日志文件通常位于
/var/log/vsftpd.log
,但具体位置可能因系统配置而异。可以通过查看/etc/vsftpd/vsftpd.conf
文件中的xferlog_file
和xferlog_std_format
参数来确定。
- VSFTP的日志文件通常位于
请注意,上述回答中的信息可能因不同的Linux发行版和VSFTP版本而有所差异。在实际操作中,请参考您所使用的系统的具体文档和指南。
相关文章:

SSH、FTP、SFTP相关协议详解
一、SSH 1、定义 SSH(Secure Shell)是一种网络协议,用于加密方式远程登录到另一台计算机上,并执行命令或程序。SSH由IETF的网络小组(Network Working Group)所制定,是建立在应用层基础上的安全…...

C语言进阶——一文带你深度了解“C语言关键字”(中篇6)
本篇文章记录我学习C语言进阶知识——C语言关键字,旨在记录分享,希望我的分享能带给你不一样的收获! 目录 一、return关键字 二、const 关键字也许该被替换为 readolny (一)、 const 修饰的只读变量 (二…...
自建极简Ethercat主站-第8章 FOE基础功能实现
文章目录 第8章 FOE8.1 FOE简介8.2 FOE 数据结构8.2.1 FOE帧格式8.2.2 FOE请求8.3 数据传输流程8.3.1 读流程8.3.2 写流程8.3.3 忙操作8.3.4 代码示例第8章 FOE 源码地址 8.1 FOE简介 FOE(File Access over Ethercat),用于节点之间的文件传输。协议类似于TFTP协议,感觉…...

SQL Zoo 8.Using Null
以下数据均来自SQL Zoo 1.List the teachers who have NULL for their department.(列出所属部门为NULL的教师) select name from teacher where dept is null 2.Note the INNER JOIN misses the teachers with no department and the departments wit…...
LeetCode274. H 指数
题目链接: 274. H 指数 - 力扣(LeetCode) 思路分析:这个题目可以使用哈希表来以空间换时间,我们设置一个数组v来统计每一个对应的影响因子的文章出现的数量,遍历一遍后,v[i]表示影响因子为i的…...
概述:Dubbo、Nacos、 Zookeeper 等分布式服务协调与治理等技术
目录 1. Dubbo 2. Nacos 3. Zookeeper Dubbo、Nacos、Zookeeper 是分布式服务协调与治理领域中的关键技术,它们在微服务架构和分布式系统中扮演着重要角色。以下是对这些技术的详细介绍: 1. Dubbo 概述: Dubbo 是一个高性能、轻量级的开…...

【LINUX】小工具降耦合,全内核函数插入宏摸索测试中。。
这阵子把这个小工具对外的耦合度降了下, include/linux/printk_self.h r77683962/linux-6.9.0 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/blob/master/include/linux/printk_self.h 这个用于初始化打印日志的级别和打印次数: void Param…...

24/8/12算法笔记 复习_线性回归
import numpy as np#导入包 X np.array([[1,1],[2,1]])#构造矩阵 y np.array([14,10])np.linalg.solve(X,y) #linalg是线性代数,用于求解线性方程AX b,solve计算线性代数回归问题X.T#转置 a X.T.dot(X)#矩阵乘法B np.linalg.inv(a)#求逆矩阵from sklearn.linea…...

Linux系统驱动(十四)输入子系统
文章目录 一、输入子系统(一)输入子系统框架结构(二)输入子系统的API 二、实现两个按键的驱动(一)实现思路(二)代码实现 一、输入子系统 在linux系统中使用输入子系统驱动上报鼠标&…...
力扣(2024.08.12)
1. 98:验证二叉搜索树 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isValidBST(self, r…...

最新版的AutoGPT,我搭建好了
最近AutoGPT不是更新了嘛 安装 我按照官方的教程 在本地搭建好了 改动 可见的改动,主要是把原来的纯命令行改成前后端的形式 看下前端界面 界面比较简单,主要分3个大块 监控 第一个是监控 主要是看你在 build 里构建的Agents的运行情况 build 第一个是Ag…...

[SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)
打开题目所给的环境我们可以看到这样一句话: 这里我先尝试访问/hint.php ,但是发现什么都没有发生, F12查看源代码也并没有发现什么,到这里来看的话似乎没有思路了,但是这个题的题目已经给了我们很明显的提示ÿ…...

基于STM32开发的智能语音助手系统
目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 智能家居控制个人语音助理常见问题及解决方案 常见问题解决方案结论 1. 引言 随着人工智能技术的发展,智能语音助手已经逐渐进入了人们的日常生活。…...
基于python的图像去雾算法研究系统设计与实现
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
自定义 View 可以播放一段视频
请实现一个自定义 View 的核心代码,核心要求可以响应如下事件: // - 要求自定义 View 可以播放一段视频 / - 在 view 左侧区域上下滑动,可以提高减少音量 / / - 在 view 右侧区域上下滑动可以提高减少屏幕亮度 // - 在 view 左右滑动可以…...

LVS负载均衡集群部署之—NAT模式的介绍及搭建步骤
一、环境准备 1.准备三台rhel9服务器 服务器名称 主机名 ip地址备注LVS调度服务器lvs.timinglee.org eth0:172.25.254.100(外网) eth1:192.168.0.100(内网) 关闭selinux和防火墙webserver2网站服务器webserver1.timinglee.orgeth0:192.168.…...
【算法】浅析哈希算法【附代码示例】
哈希算法:数据存储与检索的基石 1. 引言 在计算机科学中,哈希算法是一种用于将数据(如文件、网络地址或数据库记录)转换为固定长度的哈希值的过程。哈希值通常是一个较短的数字或字符串,用于快速检索原始数据或验证数…...

2024.8.12
2024.8.12 【梦最让我费解的地方在于,明明你看不清梦里人们的脸,却清晰地知道他们是谁。】 Monday 七月初九 序理论 最小链覆盖&最长反链长度 我们设定一个二元关系符R和一个集合A 我们设定<A,R>这样一个类群,那么对于任意 a i…...
使用Python解析pdf、docx等格式文件。
针对不同类型的文件,需要采取特定的访问与解析策略来有效获取其中蕴含的知识。下面我们将介绍对于不同数据源数据的获取方式。 1 解析Docx文档 1.1 获取Docx文档中文本 from docx import Document # pip install python-docx # python-docx 0.8.11 filename xx…...
Linux网络通信基础API
这篇文章只有Linux网络通信基础API大参数信息,和返回值,这篇文章并没有这些基础API的参数类型介绍。accept的第二个参数可以查看客户端信息。 创建socket #include <sys/types.h> /* See NOTES */#include <sys/socket.h>int sock…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...