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

news2024/11/27 21:00:05

安全外壳协议(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 证书等等。

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

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

相关文章

MyBatis 动态 SQL怎么使用?

引言&#xff1a;在现代的软件开发中&#xff0c;数据库操作是任何应用程序的核心部分之一。而在 Java 开发领域&#xff0c;MyBatis 作为一款优秀的持久层框架&#xff0c;以其简洁的配置和强大的灵活性被广泛应用。动态 SQL 允许开发人员根据不同的条件和场景动态地生成和执行…

Kubernetes部署Kanboard看板管理平台

【云原生】Kubernetes部署Kanboard项目管理平台 文章目录 【云原生】Kubernetes部署Kanboard项目管理平台介绍资源列表基础环境一、检查k8s环境1.1、检查工作节点状态1.2、检查系统pod状态 二、编辑kanboard.yaml文件2.1、创建项目目录2.2、编辑kanboard.yaml文件 三、部署Kanb…

字节跳动的丝绸之路,豆包或将成为赛博“杨枝甘露”

大数据产业创新服务媒体 ——聚焦数据 改变商业 关于字节跳动有一个所有人都知道的秘密&#xff0c;那就是他们正在想方设法地海外扩张&#xff0c;以全球市场来驱动企业的新增长。美国曾经是字节跳动的第二战场&#xff0c;但是随着华盛顿相关法案的出台&#xff0c;在各种不…

推荐5个AI辅助生成论文、降低查重率的网站【2024最新】

一、引言 对于忙碌的学生来说&#xff0c;毕业论文通常是一项艰巨的任务。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;现在有一些工具可以帮助学生轻松完成论文。本文将介绍五个免费的AI工具&#xff0c;它们能够一键帮助你生成毕业论文&#xff0c;让你的学术生…

2024广东省职业技能大赛云计算赛项实战——Redis主从架构

Redis主从架构 前言 Redis是一个开源的内存数据结构存储系统&#xff0c;一般用于作为数据库、缓存和消息代理使用&#xff0c;而主从架构是许多分布式系统中常见的设计模式&#xff0c;用来提高系统的性能、可靠性和扩展性。 虚拟机使用的是自行创建的CentOS7&#xff0c;如…

记录SpringBoot启动报错解决

记录SpringBoot启动报错解决 报错现场 Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following:If you want an embedde…

反转链表(java精简版)

反转一个单向链表。 public class ReversingLinkedList {static class Node {int val;Node next;public Node(int val) {this.val val;}public boolean hasNext() {return next ! null;}}public static void main(String[] args) {//构造Node head null;Node shift null;for…

MobileNet系列论文阅读笔记(MobileNetV1、MobileNetV2和MobileNetV3)

目录 引言MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications摘要Prior Work -- 先前工作MobileNet Architecture— MobileNet结构Depthwise Separable Convolution—深度可分离卷积Network Structure -- 网络结构 总结 MobileNetV2: Invert…

视频共享融合赋能平台LntonCVS视频监控业务平台建设安全煤矿矿井应用方案

随着我国经济的飞速增长&#xff0c;煤炭作为主要的能源之一&#xff0c;在我国的能源结构中扮演着至关重要的角色。然而&#xff0c;煤矿事故的频繁发生&#xff0c;不仅造成了巨大的人员伤亡和财产损失&#xff0c;也对社会产生了深远的负面影响。因此&#xff0c;实现煤矿的…

transformers Model

☆ 问题描述 在 transformers 框架中&#xff0c;Model 模块是核心组件之一&#xff0c;提供了多种预训练模型及其相关功能&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;任务。 ★ 解决方案 # 导入相关文件 from transformers import AutoConfig, AutoM…

【odoo】常用的字符转义:“>“,“<“,““,“/“等

概要 字符转义是指在编写代码或处理文本数据时&#xff0c;将特殊字符转换为另一种形式&#xff0c;以便在特定的上下文中正确解析和处理这些字符。 内容 特殊字符描述XML转义表示法&和符号&amp;<小于符号<>大于符号>"双引号&quot;单引号&ap…

Day1:基础语法

今日目标&#xff1a;理解什么是变量、掌握常用的数据类型、学会数据类型转换 一、JavaScript 介绍 1. JavaScript 基础知识 主要讲解 &#xff1a;JavaScript 是什么、书写位置、注释、结束符、输入和输出语法、字面量。 1.1 JavaScript 是什么 是一种运行在客户端(浏览器…

B端业务需求分析的3大注意事项

通过深入分析业务需求&#xff0c;可以准确理解B端用户的具体需求&#xff0c;帮助项目团队设计出真正解决企业问题、提高工作效率的产品或服务。这减少了后期变更&#xff0c;节约了时间和资源。如果没有深入分析业务需求&#xff0c;产品或服务功能可能与实际业务需求脱节&am…

PHP转Go系列 | 数组切片的使用姿势

大家好&#xff0c;我是码农先森。 简介 在 PHP 语言中数组的使用很简单&#xff0c;易用程度简直变态&#xff0c;无论多么复杂的数据格式都可以用数组来表达&#xff0c;可以随心所欲的使用。 <?php $array [1, name, [sex > 男]]; print_r($array);$array []; $…

【LLM之NL2SQL】DAIL-SQL论文阅读笔记

研究背景 该研究旨在提供一个全面、系统的评估框架&#xff0c;用于评估基于大型语言模型&#xff08;LLM&#xff09;的Text-to-SQL技术。特别强调了不同的提示工程策略的有效性和效率&#xff0c;以及开源LLM的可行性。研究的重点是评估在零样本和少样本场景下的不同问题表示…

1.3自然语言的分布式表示-word2vec

文章目录 0基于计数的方法的问题1什么是基于推理的方法2神经网络中单词的表示2.1 MatMul 层的实现 3简单word2vec的实现3.1 CBOW模型的结构3.1.1神经元视角3.1.2层的视角3.1.3多层共享权重时存在的问题 3.2 CBOW模型的学习3.3单词的分布式表示 代码都位于&#xff1a;nlp&#…

《梦醒蝶飞:释放Excel函数与公式的力量》4.1if函数

第4章&#xff1a;逻辑与条件函数 第一节4.1 if函数 在Excel中&#xff0c;逻辑函数用于处理基于特定条件的真假判断&#xff0c;它们是构建复杂公式和进行高级数据分析的基础。本章将深入探讨逻辑函数的使用方法&#xff0c;特别是IF函数&#xff0c;这是Excel中最为常用的条…

Node.js 是一个开源的 跨平台的JavaScript运行环境

https://www.npmjs.com/ 中央仓库 Visual Studio Code - Code Editing. Redefined https://openjsf.org/ OpenJS 促进了关键 JavaScript 技术在全球范围内的广泛采用和持续发展。 Apache服务器 Nginx服务器 Tomcat服务器 Node.js服务器 Gunicorn服务器 uW…

6个步骤实现 Postman 接口压力测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这里讲是Postman做接口并发测试&#xff0c;基础用法不做赘述 1、第一步接口可以通的情况下点击…

番外篇 | FFCA-YOLO复现:面向遥感图像的小目标检测最新方法 | 解决小目标检测特征表示不足和背景混淆等问题

前言:Hello大家好,我是小哥谈。在论文中,作者的动机是设计一个高精度同时具备潜在的实时处理能力的小目标检测器。由此,作者首先分别提出了特征增强模块(FEM)与空间上下文感知模块(SCAM)来丰富局部和全局的上下文特征信息。其中,FEM通过多分支卷积拓宽了骨干网络的感受…