SSH 密钥身份验证和管理

安全外壳协议(Security Shell Protocol)是一种应用于计算机网络的安全通信协议,其提供的服务可用于保护网络上的连接和数据传输安全性,其核心思想是为网络上的两台计算机之间搭建一个安全的外壳,以保护数据传输的安全性。

安全外壳协议的工作原理是,它在网络两端的两台计算机间搭建一个安全的外壳,用以保护传输数据的安全性,此外,它还会检验发送数据的完整性、实现发送数据的加密,并监测保护传输连接。

安全外壳协议主要由三个重要部分构成:加密技术、身份认证技术、认证机制。

  • 加密技术:是安全外壳协议的重要组成部分,它可以有效保护发送数据的安全性,它可以把数据加密成一种特殊的代码,以阻止非法者获取敏感信息。
  • 身份认证技术:是安全外壳协议的另一个重要组成部分,它的用途是验证被授权用户的身份,确保只有知道被认证的实体才能訪問系统中的数据和系统资源。
  • 认证机制:是安全外壳协议的重要组成部分,它用于检验对密码和身份认证技术的使用,以确保传输连接和数据传输得到保护。

安全外壳协议被广泛应用于网络安全领域,用来保护网络连接和数据传输的安全性,以防止非法者获取系统中的数据和资源,它具有安全性高、功能强大的特点,能够有效的保护各类网络环境。此外,它还可以用来检查密码和身份认证技术的使用,以确保传输连接和数据传输安全。

什么是 SSH(安全外壳)密钥

SSH(安全外壳)密钥是 SSH 协议中的身份验证凭据。从技术上讲,它们是负责加密的加密密钥,但在功能上,它们的工作方式与密码非常相似,在企业内部,SSH 密钥主要用于授予对远程系统的安全访问权限。基于密钥的身份验证(通常称为公钥身份验证)使用一对密钥(公钥和私钥)对远程设备上的用户进行身份验证。

  • 公钥或授权密钥:负责向访问远程系统的用户授予登录访问权限。人们可以将授权密钥想象成锁,向拥有正确密钥(在本例中为相应私钥)的人授予访问权限。授权密钥是为每个用户帐户单独配置的,通常存在于用户主目录的 .ssh/authorized_keys 文件中。
  • 私钥或身份密钥:允许用户在 SSH 服务器上对自己进行身份验证。私钥类似于真正的密钥,当匹配时,可以打开一个或多个锁。与公钥相反,私钥需要在安全的地方进行保护,否则它们最终可能会落入坏人之手,从而导致特权被滥用。

什么是 SSH 密钥身份验证过程

基于SSH的公钥身份验证是通过生成一对不同的密钥(公钥和私钥)来实现的,以便与远程系统建立连接。在远程计算机上进行身份验证的用户需要拥有私钥,而公钥应放置在用户要连接到的目标系统中。

  • 生成 SSH 身份验证密钥:登录到要从中建立远程连接的服务器。使用 SSH 密钥生成工具(如 PuTTYgen)生成密钥对。您还可以在创建密钥对时添加可选密码,以提供额外的安全层。
  • 将公钥复制到远程系统:生成密钥对后,将公钥传输到目标远程系统。确保公钥文件位于所需远程服务器的 ~/.ssh/authorized_keys 目录下。在这里,您必须提供在上一步中创建的密码。
  • 启动远程 SSH 会话:将公钥部署到目标服务器后,可以从系统中打开与这些服务器的 SSH 连接。

以下是 SSH 密钥身份验证过程在后台发生的方式。

  • 客户端首先将 ID 发送到它希望在远程服务器中进行身份验证的密钥对。
  • 服务器检查客户端尝试登录的帐户中是否有具有相同密钥 ID 的公钥。
  • 如果找到匹配的公钥,服务器会生成一个随机数,使用公钥对其进行加密,并将其发送到客户端。
  • 客户端使用私钥解密消息,并在会话密钥的帮助下计算消息的 MD5 哈希值。
  • 然后,客户端对哈希值进行加密,并将其发送到服务器。
  • 同时,服务器还计算发送到客户端的消息的 MD5 哈希值(借助会话密钥)。如果这两个值匹配,则证明客户端拥有相应的私钥,并且客户端在服务器上进行了身份验证。

在这里插入图片描述

在开始 SSH 密钥身份验证过程之前,请确保客户端和服务器都安装了工作版本的 SSH,基于密钥的身份验证的一大优点是,如果实施得当,它可以极大地简化身份验证过程,并将其安全性提高数倍。

为什么需要保护 SSH 密钥

尽管人们对 SSH 密钥管理不善和风险产生了认识,但大多数企业都遵循分散的密钥创建和使用方法,随着时间推移,这会导致密钥激增,而每个密钥提供的访问范围的可见性大大降低。SSH 密钥管理不善会以多种方式给企业带来麻烦,包括:

  • 外部攻击:当攻击者获得对孤立的 SSH 密钥的访问权限时,他们能够建立立足点并轻松地在网络内移动,因为基于密钥的网络是紧密交织在一起的。然后,攻击者可以将其权限提升为 root 访问权限,从关键任务系统中窃取敏感数据,并创建后门进行永久访问。
  • 内部攻击:SSH 密钥管理不善也是导致内部攻击的主要原因,心怀不满的员工或恶意的第三方供应商或承包商可以访问对特权系统进行身份验证的密钥,并最终掠夺敏感数据。

关于这些攻击的一件棘手的事情是,由于 SSH 密钥很少轮换,它们将继续留在坏人手中,直到它们以某种方式被发现并终止其访问。

  • 不合规风险:SSH 密钥管理对于企业遵守各种强制性行业法规(如 SOX、FISMA、PCI 和 HIPAA)也至关重要。未能整合适当的 SSH 密钥管理系统可能会导致公司违反合规要求,并付出巨大的代价。

SSH 密钥管理

SSH 密钥管理是保护和自动化分布在企业中的 SSH 密钥生命周期的过程,从创建到将其部署到必要的端点、启动远程会话、监控密钥用户映射、执行密钥轮换以及定期删除未使用或不需要的密钥。SSH 密钥属于始终管理不足的关键数字资产类别。实施定义明确的管理流程有助于企业全面了解其 SSH 环境,并防止因未经授权访问 SSH 密钥而导致的权限滥用。

以下是一些步骤,可帮助 SSH 密钥管理:

  • 发现和整合:管理 SSH 密钥的第一步是发现网络中的现有密钥,并将它们整合到一个集中式存储库中。
  • 映射信任关系:将所有 SSH 密钥收集到一个位置后,您必须跟踪现有的信任关系,以清楚地了解每个密钥授予的访问范围,然后,您必须制定密钥用户映射,这将帮助您确定网络中对特权帐户具有 root 访问权限的用户数量。
  • 创建和部署新的 SSH 密钥对:现在,您可以完全了解 SSH 环境,请扫描并删除不再使用的 SSH 密钥,此处的最佳实践方法是通过删除与网络中各种用户帐户关联的所有 SSH 密钥来重新开始,并将其替换为新创建的密钥对。
  • 简化 SSH 密钥创建和部署:对于密钥生成,强烈建议您通过管理集中式框架来简化该过程,该框架仅允许具有特定权限的用户创建密钥并将其部署到网络中的系统,这样一来,您就可以在组织内的信任关系中占据上风,并且能够防止 SSH 密钥扩散。
  • 实施精细的访问控制:将新的密钥对部署到目标系统后,必须根据用户角色定义每个密钥的权限,即对可以使用密钥的主机的限制,以及密钥可以执行的命令。
  • 强制执行定期 SSH 密钥轮换:SSH 密钥轮换是抛弃现有的 SSH 密钥用户关联,不时部署新密钥对的做法,以应对 SSH 密钥泄露的不幸事件,授权密钥(放置在目标系统上)和身份密钥都需要定期轮换,以避免潜在的权限滥用。
  • 审核所有用户活动并生成预制报告:设置防篡改审核机制,以跟踪涉及 SSH 密钥的所有用户活动并生成分类报告,这将提高所收集数据的敏感性和可读性,并帮助管理员做出明智的业务决策。

Key Manager Plus 是基于Web的SSH密钥和SSL证书管理解决方案,可帮助您从单一管理平台发现、整合、创建、部署、轮换和跟踪SSH密钥。它是一个一体化解决方案,可为 IT 管理员提供对其 SSH 环境的完全可见性和控制,使管理无忧无虑,并帮助他们预防违规和合规性问题。

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

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

相关文章

企业微信开发:自建应用:接收消息(企业内部服务器)/回调配置

概述 在企业微信的自建应用中,用户触发了某些行为(发送消息、进行菜单操作或者外部联系人变更等),要发送相关信息给企业内部服务器。 备注:接收消息 和 回调,在本文中指代相同的行为,即企业微信…

多内层神经网络具有先天的不可解释性

多层神经网络的不可解释性是指其内部的决策过程很难被人类理解和解释。这主要是因为多层神经网络具有大量的神经元和多个层次的连接,使得网络的决策过程变得非常复杂。 具体而言,多层神经网络中每一层的神经元会根据输入的特征进行加权组合和非线性变换&…

【管理篇 / 恢复】❀ 08. 文件权限对macOS下用命令刷新固件的影响 ❀ FortiGate 防火墙

【简介】虽然上篇文章中成功的在macOS下刷新了固件,但是很多小伙伴在实际操作中碰到了无法成功的状况,我们来看看最常见的一种。 在/private/tftpboot目录拷贝另一个版本的固件文件,具体拷贝过程不再详述。 打开终端,输入命令 sud…

Java内存泄漏问题分析

内存泄漏也是一个老八股文了,下面来看看实际项目中内存泄漏的场景分析 时间回到9月某一天 分析阶段一 现象:在当时各种请求在那段时间响应很慢,特别是 kafka异步消费线程 不足点:当时主业务基本不可用,有点急&#…

线性代数 --- 为什么LU分解中L矩阵的行列式一定等于(+-)1?

以下是关于下三角矩阵L的行列式一定等于-1的一些说明 证明:在LU分解中,下三角矩阵L的行列式一定是. 在证明之前,我这里先补充几条关于行列式的性质: 性质1:对于三角矩阵而言,不论是上三角矩阵还是下三角矩…

分布式之任务调度学习一

1 任务调度 1.1 什么时候需要任务调度? 1.1.1 任务调度的背景 在业务系统中有很多这样的场景: 1、账单日或者还款日上午 10 点,给每个信用卡客户发送账单通知,还款通知。如何判断客户的账单日、还款日,完成通知的发…

【数据库系统概论】数据库并发控制机制——并发操作带来的数据不一致性问题有哪些

系统文章目录 数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统 数据库系统的三级模式和二级映射 数据库系统外部的体系结构 数据模型 关系数据库中的关系操作 SQL是什么?它有什么特点? 数据定义之基本表的定义/创建、修改和…

扩展 apiserver 连接认证 ip, apiserver证书更新

本文来自我的博客地址 文章目录 问题场景:问题分析:问题解决:查看 apiserver 证书支持的 ip 或 host使用 openssl 生成证书:再次查看 apiserver 证书支持的 ip 或 host 再次尝试将 master 加点加入参考 问题场景: k8s 1.28.1 集群后期新增 vip apiserver 证书不支持 vip 引入…

[NSSRound#3 Team]This1sMysql

[NSSRound#3 Team]This1sMysql 源码 <?php show_source(__FILE__); include("class.php"); $conn new mysqli();if(isset($_POST[config]) && is_array($_POST[config])){foreach($_POST[config] as $key > $val){$value is_numeric($var)?(int)$…

Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models

ABSTRACT 现代大规模视觉-语言模型&#xff08;LVLMs&#xff09;采用了相同的视觉词汇-CLIP&#xff0c;可以涵盖大多数常见的视觉任务。然而&#xff0c;对于一些需要密集和细粒度视觉感知的特殊视觉任务&#xff0c;例如文档级OCR或图表理解&#xff0c;尤其是在非英语环境…

PHP运行环境之宝塔软件安装及Web站点部署流程

PHP运行环境之宝塔软件安装及Web站点部署流程 1.1安装宝塔软件 官网&#xff1a;https://www.bt.cn/new/index.html 自行注册账号&#xff0c;稍后有用 下载安装页面&#xff1a;宝塔面板下载&#xff0c;免费全能的服务器运维软件 1.1.1Linux 安装 如图所示&#xff0c;宝…

ubuntu18.04+realsenseD455制作TUM数据集

教程目录 一、本机环境二、安装RealSense SDK三、录制rosbag四、制作数据集四、安装ROS-RealSense五、测试数据集一、本机环境 Ubuntu系统ROS系统RealSense18.04melodicD455二、安装RealSense SDK 1、首先注册服务器的公钥 sudo apt-key adv --keyserver keyserver.ubuntu.co…

Protobuf 安装与使用

Protobuf 安装与使用 1 环境2 安装 [apt安装]2 安装 [源码安装]1 依赖2 下载 protobuf3 解压4 编译安装5 配置环境 2 命令查看版本卸载 3 使用书写 .proto 文件编译 .proto 文件生成 cpp 文件编写 cpp 文件编译运行 参考 1 环境 ubuntn 20.04 protobuf v3.6.1 2 安装 [apt安装…

使用STM32的定时器和PWM实现LCD1602的背光控制

使用STM32的定时器和PWM功能来控制LCD1602的背光是一种常见的方法&#xff0c;它可以实现背光的亮度调节和闪烁效果。在本文中&#xff0c;我们将讨论如何利用STM32的定时器和PWM来实现LCD1602的背光控制&#xff0c;并提供相应的代码示例。 1. 硬件连接和初始化 首先&#x…

Jupyter Lab | 在指定文件夹的 jupyter 中使用 conda 虚拟环境

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要了解如何在指定文件夹的 jupyter 中使用 conda 虚拟环境&#xff0c;即在 conda 里面创建虚拟环境、将虚拟环境添加至 jupyter lab/notebook、安装软件包。 目录 一、创建虚拟环境 二、激活并进入虚拟环境 三、安装 …

C语言编译器(C语言编程软件)完全攻略(第二十九部分:Linux GCC简明教程(使用GCC编写C语言程序))

介绍常用C语言编译器的安装、配置和使用。 二十九、Linux GCC简明教程&#xff08;使用GCC编写C语言程序&#xff09; 市面上常见的 Linux 都是发行版本&#xff0c;典型的 Linux 发行版包含了 Linux 内核、桌面环境&#xff08;例如 GNOME、KDE、Unity 等&#xff09;和各种…

关于“Python”的核心知识点整理大全61

目录 注意 20.1.4 使用 jumbotron 设置主页的样式 index.html 20.1.5 设置登录页面的样式 login.html 20.1.6 设置 new_topic 页面的样式 new_topic.html 20.1.7 设置 topics 页面的样式 topics.html 元素&#xff0c;让它们在页面上显得大些&#xff08;见2&#xf…

上传自己的依赖到maven仓库 -- 保姆级复盘

上传自己的依赖到maven仓库 -- 保姆级复盘 1、准备工作1.1、安装Git1.2、将需要上传的代码先上传到Gitee中1.2.1、上传步骤1.2.2、如果出现以下错误&#xff08;主要原因是gitee中README.md文件和本地不一致&#xff0c;或者不在本地代码目录中&#xff09; 2、sonatype注册登录…

Unity组件开发--传送点

本组件仅实现A传送点到B传送的功能&#xff0c;是可以双向传送的&#xff0c;如果只要单向传送&#xff0c;可以另外改脚本实现&#xff1b; 先看效果&#xff1a; unity组件传送点演示 1.传送组件shader是怎么写的&#xff1a;这种效果的实现方案 shader编辑器是这样的&#…

kubectl常用命令(主题篇)

上一篇是按照操作把全局性的命令给整理出来&#xff0c;但是在实际的使用中&#xff0c;经常需要对某一个主题进行操作&#xff0c;因此这一篇按照对应的主题进行一系列操作。 集群 查看集群基本信息 kubectl cluster-info namespace 命名空间 查看 kubectl get namespace k…