什么是 SSH(安全外壳协议)以及如何工作

安全外壳协议(Secure Shell,简称SSH),旨在取代未加密的协议(如 Telnet 和 RSH)和未受保护的文件传输协议(如 FTP 和 RCP),在两个设备之间提供安全的加密连接。

安全外壳(SSH)是一种网络协议,用户可以通过该协议在未受保护的网络上与目标资源建立安全的远程连接,管理员主要使用 SSH 协议远程登录并访问其网络中的计算机、执行文件传输、执行命令和管理应用程序。

SSH 主要用于连接到 Linux/Unix 设备,因为 SSH 通常作为大多数 Linux 发行版上易于安装的软件包提供,并且只需几个命令即可安装。若要安全地连接到 Windows 设备,通常使用远程桌面协议 (RDP),因为它在 Windows 设备中本机可用。

SSH是如何工作的

SSH 使用客户端-服务器体系结构来建立安全的加密连接,SSH客户端作为一种媒介,促进与SSH服务器的安全连接,并在显示和控制会话的地方运行,服务器是使用该协议访问的目标计算机。一开始,当需要在两台计算机(SSH 客户端和服务器)之间建立连接时,SSH 客户端会通过联系服务器来启动连接。

然后,客户端继续从服务器获取公钥,根据所使用的加密类型,服务器和 SSH 客户端协商参数并建立安全的加密通道。然后,用户可以登录到服务器并执行所需的操作。

  • 从 SSH 客户端尝试 SSH 会话。
  • SSH 客户端会连接到目标服务器。
  • SSH 客户端从 SSH 服务器获取公钥,特别是从 .ssh/authorized_keys 文件中获取公钥。
  • 客户端和服务器协商参数和加密方法,然后使用合适的密钥交换算法制定加密的会话密钥。
  • 然后,用户使用适当的凭据进行身份验证并登录到目标服务器。
  • 现在已建立安全连接,用户可以在服务器上执行操作。

如何启动 SSH 连接

Unix、Linux 和 macOS 设备内置SSH客户端,允许从终端直接启动SSH连接,还可以使用SSH客户端(如PuTTY)启动连接。

但是,如果要从 Windows 设备启动 SSH 连接,则必须使用 OpenSSH 或 PuTTY 等 SSH 客户端来启动连接,另外,可以使用 RDP 协议建立安全的 Windows-Windows 连接。

在服务器端,需要安装 SSH 服务器包,并且需要安装并运行称为 SSH 守护进程的服务器端组件,SSH 守护进程通过侦听 TCP 端口 22 上的所有连接来检查任何 SSH 连接请求。

如果您在 Windows 设备上使用 Linux/macOS 设备或 SSH 客户端,则可以输入以下命令以从设备终端启动与远程服务器的 SSH 连接:

如果使用的是 Linux/macOS设备或Windows设备上的SSH客户端,可以输入以下命令从设备终端启动到远程服务器的SSHl连接:
ssh <user_name>@<host_name>

在与服务器建立连接之后,使用用户帐户的适当凭据对自己进行身份验证,然后,用户可以继续在目标服务器上执行命令、传输文件、管理应用程序等。

SSH 加密方法

主要用于使用 SSH 建立安全连接的加密方法:

  • 对称加密
  • 非对称加密
  • 散列

对称加密

所谓对称,就是采用这种加密方法的双方,使用方式用同样的密钥进行加密和解密,密钥是控制加密及解密过程的指令,算法是一组规则,规定如何进行加密和解密。对称加密通常使用单个共享密钥完成,尽管它也可以使用一对密钥。

当客户端与服务器建立 SSH 连接时,客户端和服务器协商使用密钥交换算法独立生成共享密钥的通用方法,然后使用这个商定的方法来生成共享密钥,然后使用共享密钥对整个会话进行加密,并且后续通信是安全的。

此共享密钥永远不会在客户端和服务器之间通信,因此无法被截获,即使公开了共享密钥,另一台计算机也无法解密通信,因为只有客户端和服务器知道约定的方法。

在这里插入图片描述

非对称加密

非对称加密使用公私密钥对建立加密连接,非对称加密的安全机制是双重的。

首先,客户端和服务器都使用合适的算法(如RSA算法)独立生成各自的临时公钥-私钥对。当客户端尝试建立 SSH 连接时,客户端和服务器会相互共享各自的公钥。

之后,基于接收方公钥的加密身份验证消息从发送方发送到接收方。这样做是为了验证客户端的身份。然后,接收方使用接收方的私钥对加密的身份验证消息进行解密,然后对身份进行身份验证。

身份验证完成后,计算机使用密钥交换算法生成合适的共享会话密钥,然后使用该算法对通信进行加密。

需要注意的是,私钥仍然是私有的,不会在任何时候在服务器和客户端之间传输。私钥充当接收方解密身份验证消息的身份验证机制,而加密则使用共享密钥进行。

由于私钥不与第三方共享,并且在加密中添加了身份验证层,因此非对称加密被认为是比对称加密更安全的加密方法。

在这里插入图片描述

散列

散列是指使用加密散列函数对消息进行加密。这个加密的消息称为Hashing,与对称和非对称形式的加密不同,当使用散列或加密散列函数时,加密消息并不意味着由接收方解密。

但是,如果接收方事先知道未散列的消息,并且使用散列函数进行散列,则接收方可以从散列中验证消息。这使得散列成为用于数据完整性检查和身份验证目的的可靠加密方法。

哈希的加密过程类似于对称加密,但除了共享密钥的协商过程外,还会选择消息身份验证代码 (MAC) 算法。这是基于客户端和服务器的MAC兼容性。之后,一旦建立了安全通信信道,每条消息都会使用MAC进行哈希处理,接收方在计算MAC后验证消息的完整性。这是根据共享密钥、未散列的消息内容和消息的相应数据包序列号完成的。

常用的SSH认证方式

建立 SSH 连接的常用用户身份验证方法有两种类型:密码身份验证和 SSH 密钥身份验证。

密码身份验证

密码身份验证是建立SSH连接时更广泛使用的身份验证方法,共享密钥和加密协商完成后,服务器会提示用户输入客户端正在尝试登录的用户账号的密码。

尽管只有在建立加密连接之后才传输密码,但它仍然可能被暴力破解弱密码、脚本等利用,为了避免这种情况,使用SSH密钥的身份验证被越来越多地采用。

使用 SSH 密钥进行身份验证

使用SSH密钥的身份验证涉及公私非对称SSH密钥对,在对称加密之后,客户端生成密钥对 ID,服务器通过查找用户的.ssh/authorized_keys文件来验证这个ID,如果ID匹配,则使用公钥生成并加密随机数,然后客户端使用其私钥对其解密。

然后,客户端在对称加密期间使用解密的号码和已建立的共享密钥对号码进行散列处理,并以 MD5 哈希值的形式将其发送回服务器,一旦服务器使用相同的共享密钥和数字自行计算 MD5 哈希值并确定其匹配项,身份验证就完成了。

多层密钥的身份验证成为一种更安全的加密形式,因为不传输服务器的私钥,并且还需要共享密钥来篡改身份验证。

为SSH会话添加额外的安全层

鉴于企业大量使用SSH协议在特权远程服务器上执行操作,从中央控制台管理SSH会话以保护敏感数据变得非常重要。尽管SSH连接是安全加密远程会话的标准,但目标资源仍然可能受到特权滥用、数据丢失和其他内部威胁。可通过使用特权访问管理(PAM)解决方案(如PAM360)来管理特权资源和会话来解决。

PAM360 特权访问管理解决方案为组织提供了一个中央控制台来管理其所有特权会话,包括但不限于 SSH 密钥和会话。从监控、隐藏和管理 SSH 会话,到管理、部署和轮换 SSH 密钥,还可提供特权访问、管理和轮换密码、提升访问权限、管理 RDP 会话、执行安全文件传输、管理 SSL/TLS 证书等等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字社交的领航者:解析Facebook的引领作用

在当今数字化社会中&#xff0c;社交网络已经成为了人们日常生活不可或缺的一部分。而在众多社交平台中&#xff0c;Facebook凭借其巨大的用户基础和创新的技术应用&#xff0c;被公认为数字社交领域的领航者之一。本文将深入解析Facebook在数字社交中的引领作用&#xff0c;探…

免费可视化工具如何提升工作效率?

免费可视化工具能为我们的工作带来什么好处&#xff1f;在如今数据密集的工作环境中&#xff0c;如何高效地处理和展示数据成为了每个行业的重要任务。传统的工具如Excel虽然强大&#xff0c;但在处理复杂数据和创建高级图表时往往显得力不从心。而免费可视化工具的出现&#x…

让DroidVNC-NG支持中文输入

DroidVNC-NG支持控制端输入内容&#xff0c;但是仅支持英文字符&#xff0c;如果需要控制输入法软键盘输入中文的话就没办法了&#xff0c;经过摸索找到了解决办法。 这个解决办法有个条件就是让DroidVNC-NG成为系统级应用&#xff08;这个条件比较苛刻&#xff09;&#xff…

HarmonyOS Next开发学习手册——层叠布局 (Stack)

概述 层叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过 Stack 容器组件实现位置的固定定位与层叠&#xff0c;容器中的子元素依次入栈&#xff0c;后一个子元素覆盖前一个子元素&…

谈谈Flink消费kafka的偏移量

offset配置: flinkKafkaConsumer.setStartFromEarliest():从topic的最早offset位置开始处理数据&#xff0c;如果kafka中保存有消费者组的消费位置将被忽略。 flinkKafkaConsumer.setStartFromLatest():从topic的最新offset位置开始处理数据&#xff0c;如果kafka中保存有消费…

全自动封箱机技术革新:效率优化新篇章

在日新月异的物流行业中&#xff0c;全自动封箱机以其高效、精准的特性&#xff0c;成为了不可或缺的关键设备。然而&#xff0c;随着市场竞争的加剧和客户需求的不断升级&#xff0c;如何进一步优化全自动封箱机的效率&#xff0c;成为了行业内外关注的焦点。 一、全自动封箱机…

俯视LLM的灵魂:一文搞懂稀疏自动编码器

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

鸿蒙开发HarmonyOS NEXT (一) 入门

最近总听见大家讨论鸿蒙&#xff0c;前端转型的好方向&#xff1f;先入门学习下 目前官方版本和文档持续更新中 一、开发环境 提示&#xff1a;要占用的空间比较多&#xff0c;建议安装在剩余空间多的盘 1、下载&#xff1a;官网最新工具 - 下载中心 - 华为开发者联盟 (huaw…

滑动窗口1

1. 长度最小的子数组&#xff08;209&#xff09; 题目描述: 算法原理&#xff1a; 这题使用滑动窗口的方法来进行解决&#xff0c;而滑动窗口实际上就是通过定义同向双指针的方式来实现的&#xff0c;两个指针就是窗口的左右边界&#xff0c;然后结合这样的思想来给出这题的…

华为---配置基本的访问控制列表(ACL)

11、访问控制列表&#xff08;ACL&#xff09; 11.1 配置基本的访问控制列表 11.1.1 原理概述 访问控制列表ACL(Access Control List)是由permit或deny语句组成的一系列有顺序的规则集合&#xff0c;这些规则根据数据包的源地址、目的地址、源端口、目的端口等信息来描述。A…

MySQL数据库简介和安装

文章目录 一、数据库原理目前情况数据库的发展史RDBMS关系型数据库关系型数据库理论 二、MySQL历史发展历程关系型数据库和非关系型数据库 三、安装mysql及优化yum安装编译安装mysql二进制安装优化操作 四、 安装mycli插件客户端工具 一、数据库原理 目前情况 我们正处于一个…

Servlet中请求转发【 Forward】与重定向【Redirection】的区别

在Servlet中&#xff0c;请求转发&#xff08;Request Forwarding&#xff09;和重定向&#xff08;Redirection&#xff09;是用于控制请求流程的两种不同机制。它们的主要区别如下&#xff1a; 一、请求转发 服务器内部操作&#xff1a;转发是在服务器内部进行的操作&#xf…

Datax学习

DataX学习 DataX3.0概览 DataX 是一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。学习可见官网资料(https://github.com/alibaba/DataX)。 设计理念&#…

MySQL之可扩展性(六)

可扩展性 向外扩展 12.重新均衡分片数据 如有必要&#xff0c;可以通过在分片间移动数据来达到负载均衡。举个例子&#xff0c;许多读者可能听一些大型图片分享网站或流行社区网站的开发者提到过用于分片间移动用户数据的工具。在分片间移动数据的好处很明显。例如&#xff…

【JavaScript】流程控制和函数

目录 一、分支语句 1、if语句&#xff1a; 2、switch语句&#xff1a; 二、循环语句 1、while循环语句 2、for循环语句 三、函数声明 1、function 函数名(形参列表){ 函数体 } 2、var 函数名function(形参列表){函数体} 一、分支语句 1、if语句&#xff1a; if(表达式){ }else …

高考志愿不知道怎么填?教你1招,用这款AI工具,立省4位数

高中的岁月&#xff0c;就像一本厚厚的书&#xff0c;我们一页页翻过&#xff0c;现在&#xff0c;终于翻到了最后一页。但这不是结束&#xff0c;这是新的开始&#xff0c;是人生的新篇章。 高考落幕&#xff0c;学子们在短暂的放松后&#xff0c;又迎来了紧张的志愿填报。 “…

达梦数据库的系统视图v$locked_object

达梦数据库的系统视图v$locked_object 在达梦数据库&#xff08;Dameng Database&#xff09;中&#xff0c;V$LOCKED_OBJECT 视图提供了与数据库中被锁定对象相关的信息。这通常用于监控和诊断数据库中的锁定问题&#xff0c;帮助管理员了解哪些对象被锁定了&#xff0c;以及…

如何在Windows 11上设置默认麦克风和相机?这里有详细步骤

如果你的Windows 11计算机上连接了多个麦克风或网络摄像头&#xff0c;并且希望自动使用特定设备&#xff0c;而不必每次都在设置中乱动&#xff0c;则必须将首选设备设置为默认设备。我们将向你展示如何做到这一点。 如何在Windows 11上更改默认麦克风 有两种方法可以将麦克…

工商银行:低息差下的挣扎

时隔四年&#xff0c;市值再度超越贵州茅台成为A股“股王”。 今天要说的就是“宇宙行”——中国工商银行 虽然茅台的信仰开始崩塌&#xff0c;但各大银行股巨头们今年也不好过。2024年一季度六大行业绩集体受挫&#xff0c;息差普遍收窄超过20个基点。其中&#xff0c;包括工…

【Web3】Web3.js 启动!并解决Web3 is not a constructor报错

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动&#xff01; 于是很愉快的报错 创建实例&#xff01; 出来了 Web3&#xff1a;模块…