RHCE笔记-SSH服务

一.对称加密与非对称加密

1.1对称加密

1. 原理

对称加密是指加密和解密使用相同的密钥。也就是说,发送方和接收方在通信之前需要共享一个秘密密钥,使用这个密钥对数据进行加密和解密。

2. 常见算法
  • AES (Advanced Encryption Standard):广泛使用的对称加密标准。
  • DES (Data Encryption Standard):较老的标准,现已被 AES 替代。
  • 3DES (Triple DES):对 DES 的改进版,通过三次加密增加安全性。
  • RC4:一种流加密算法,速度快但存在安全漏洞。
3. 优点
  • 速度快:对称加密的加密和解密速度较快,适合处理大量数据。
  • 实现简单:相对容易实现和部署。
4. 缺点
  • 密钥分发问题:密钥必须安全地传递给通信双方,如何安全地分发密钥是一个难题。
  • 密钥管理复杂:随着用户数量的增加,需要管理的密钥数量也急剧增加,容易出现安全隐患。
5. 应用场景
  • 数据库加密:保护存储在数据库中的敏感数据。
  • 硬盘加密:对整个硬盘或特定文件进行加密保护。
  • 通信协议:如 SSL/TLS 中的会话加密。

1.2非对称加密

1. 原理

非对称加密使用一对密钥:公钥和私钥。公钥可以公开,任何人都可以使用它来加密数据;而私钥则必须保密,只有密钥的拥有者才能使用它解密数据。加密后的数据只能用相应的私钥解密。

2. 常见算法
  • RSA (Rivest-Shamir-Adleman):最广泛使用的非对称加密算法。
  • DSA (Digital Signature Algorithm):主要用于数字签名。
  • ECC (Elliptic Curve Cryptography):基于椭圆曲线数学,提供更高的安全性和效率。
3. 优点
  • 密钥分发安全:公钥可以公开,避免了密钥分发的风险。
  • 身份验证:非对称加密可以用来验证发送者的身份(数字签名)。
4. 缺点
  • 速度慢:非对称加密的加密和解密速度较慢,不适合大量数据的加密。
  • 计算复杂:相较于对称加密,非对称加密的计算开销更大。
5. 应用场景
  • 数字签名:确保数据的完整性和来源。
  • 安全邮件:如 PGP(Pretty Good Privacy)等邮件加密工具。
  • SSL/TLS 握手:用于安全网站的证书交换和密钥协商。

1.3对称加密与非对称加密的结合

在实际应用中,对称加密和非对称加密常常结合使用,以发挥各自的优势。例如,在 SSL/TLS 协议中,非对称加密用于安全地交换对称加密密钥,而后续的实际数据传输则使用对称加密,以提高效率。

总结

  • 对称加密适合大规模数据的快速加密,但密钥管理和分发是其主要挑战。
  • 非对称加密则解决了密钥分发的问题,提供了身份验证的能力,但速度较慢,适合少量数据或密钥交换。

 二.SSH-client连接SSH-server过程

  1. 版本号协商阶段,SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本
  2. 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法
  3. 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证
  4. 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求
  5. 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互

2.1 版本号协商阶段

  1. 服务器打开端口 22,等待客户端连接。
  2. 客户端向服务器端发起 TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符串,格式为“SSH-<主协议版本号>.<次协议版本号>-<软件版本号>”,协议版本号由主版本号和次版本号组成,软件版本号主要是为调试使用。
  3. 客户端收到报文后,解析该数据包,如果服务器端的协议版本号比自己的低,且客户端能支持服务器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。
  4. 客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号,决定是否能同客户端一起工作。
  5. 如果协商成功,则进入密钥和算法协商阶段,否则服务器端断开 TCP连接。

Note: 版本号协商阶段报文都是采用明文方式传输的。

2.2密钥和算法协商阶段

  1. 服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等;
  2. 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。
  3. 服务器端和客户端利用 DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话 ID。

通过以上步骤,服务器端和客户端就取得了相同的会话密钥和会话ID。

  • 对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全
  • 在认证阶段,两端会使用会话 ID用于认证过程。

Note:

在协商阶段之前,服务器端已经生成 RSA或 DSA密钥对,他们主要用于参与会话密钥的生成。

2.3 认证阶段

  1. 客户端向服务器端发送认证请求,认证请求中包含用户名、认证方法、与该认证方法相关的内容(如:password认证时,内容为密码)。
  2. 服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。
  3. 客户端从认证方法列表中选取一种认证方法再次进行认证。
  4. 该过程反复进行, 直到认证成功或者认证次数达到上限, 服务器关闭连接为止。

SSH提供两种认证方式:

  1. password认证:客户端向服务器发出 password认证请求,将用户名和密码加密后发送给服务器;

服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。

  1. publickey 认证:采用数字签名的方法来认证客户端。

目前,设备上可以利用RSA和 DSA两种公共密钥算法实现数字签名。

客户端发送包含用户名、公共密钥和公共密钥算法的 publickey 认证请求给服务器端。

服务器对公钥进行合法性检查,如果不合法,则直接发送失败消息;

否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息

2.3.1数字签名

注:如何利用数字签名认证,服务器使用协商的对称密钥,以及客户端发送的公钥加密一段随机字符串,发送给客户端,客户端解密后发送给服务器端,相同则通过,不相同则失败,直到达到次数上限断开连接

SSH2.0还提供了 password-publickey 认证和 any 认证:

  1. password-publickey 认证:指定该用户的认证方式为 password 和 publickey认证同时满足。

客户端版本为 SSH1的用户只要通过其中一种认证即可登录;客户端版本为 SSH2的用户必须两种认证都通过才能登录。

  1. any认证:指定该用户的认证方式可以是 password,也可以是 publickey。

2.4会话请求阶段

  1. 服务器等待客户端的请求;
  2. 认证通过后,客户端向服务器发送会话请求;
  3. 服务器处理客户端的请求。请求被成功处理后, 服务器会向客户端回应 SSH_SMSG_SUCCESS包,SSH进入交互会话阶段;否则回应 SSH_SMSG_FAILURE包,表示服务器处理请求失败或者不能识别请求。

2.5交互会话阶段

在这个模式下,数据被双向传送:

  1. 客户端将要执行的命令加密后传给服务器;
  2. 服务器接收到报文,解密后执行该命令,将执行的结果加密发还给客户端;
  3. 客户端将接收到的结果解密后显示到终端上.

三.SSH服务配置

3.1开启root用户登录权限

1.修改ssh配置文件

[root@server ~]# vim /etc/ssh/sshd_config

 2.修改下列配置行,改为yes,并开启

PermitRootLogin yes

3.重启ssh服务

[root@server ~]# systemctl restart ssh

注:在rhel-9以后版本安装时若未开启,该选项的默认设置是禁止,Ubuntu中则相同,禁止登录

3.2修改使用端口

1.修改配置文件

[root@server ~]# vim /etc/ssh/sshd_config

2.修改下列行为对应端口行

Port 22

3.修改selinux状态

  • Enforcing:强制执行策略,阻止不符合策略的操作。
  • Permissive:不阻止任何操作,但记录违反策略的行为。
  • Disabled:完全禁用 SELinux。

临时更改状态

setenforce 1  # 设置为 Enforcing
setenforce 0  # 设置为 Permissive

永久更改模式(重启后生效): 编辑 SELinux 配置文件:

sudo vi /etc/selinux/config

找到以下行并修改为所需模式:

SELINUX=enforcing # 或 permissive 或 disabled

查看当前seLinux状态

setatus

使用命令查看对应服务的规则

getsebool -a | grep httpd

3.3开启密码认证+密钥认证+修改密钥存储路径

1.开启密钥认证

PubkeyAuthentication yes

2.开启密码认证

PasswordAuthentication yes

3.修改密钥存储路径

AuthorizedPrincipalsFile %h/.ssh/authorized_keys

注;这里%h取代了~,表示工作主目录

~是一个shell特性,可能不会被ssh_config所理解,所以这里是运用了一个宏规则,类似的还有

常见的 OpenSSH 宏

  1. %u

    • 表示当前用户的用户名。
    • 示例:AuthorizedKeysFile %h/.ssh/authorized_keys 可以用 %u 表示用户名,例如 user
  2. %h

    • 表示当前用户的主目录.
  3. %d

    • 表示用户的家目录的完整路径(与 %h 相同)。
    • 用法类似于 %h
  4. %p

    • 表示当前连接的端口号。
    • 可以在特定配置中使用,例如限制某个用户在特定端口上的登录。
  5. %r

    • 表示当前连接的远程主机名或 IP 地址。
    • 可用于日志记录或访问控制。
  6. %l

    • 表示当前连接的主机名。
    • 在多主机环境下特别有用。

总的来说,宏规则的出现就像是编程语言中的变量,当一些反复会出现的量出现更改时,可以极大的减少工作量. 

3.4关于~/.ssh/下的配置文件

[root@server .ssh]# ls -al
总用量 24
drwx------.  2 root root  103 10月 19 11:42 .
dr-xr-x---. 16 root root 4096 10月 20 16:59 ..
-rw-------.  1 root root 1145 10月 19 11:43 authorized_keys
-rw-------.  1 root root 2602 10月 19 11:42 id_rsa
-rw-r--r--.  1 root root  565 10月 19 11:42 id_rsa.pub
-rw-------.  1 root root 1504 10月 19 11:42 known_hosts
-rw-------.  1 root root  760 10月 19 11:42 known_hosts.old
  1. authorized_keys

    • 说明:该文件存储了允许访问该用户账户的公钥列表。当用户尝试通过 SSH 连接到服务器时,系统会检查他们提供的私钥是否与此文件中列出的公钥相匹配。
    • 权限:通常设置为 600(即 rw-------),表示只有文件所有者可以读写。
  2. id_rsa

    • 说明:这是用户的私钥文件。私钥用于身份验证,应该严格保密,任何人都不应能访问此文件。
    • 权限:设置为 600,确保只有文件所有者可以读写。
  3. id_rsa.pub

    • 说明:这是用户的公钥文件。它可以被分享给任何人,并且通常会添加到其他系统的 authorized_keys 文件中,以便允许使用相应私钥的用户访问。
    • 权限:一般设置为 644(即 rw-r--r--),允许所有人读取,但只有所有者可以写入。
  4. known_hosts

    • 说明:该文件保存了已知的 SSH 服务器的公钥信息。每当用户首次连接到新的 SSH 服务器时,系统会询问用户是否信任该服务器并保存其公钥,以防止中间人攻击。以后的连接会通过此文件中的公钥验证服务器身份。
    • 权限:通常设置为 600,确保只有文件所有者可以读写。
  5. known_hosts.old

    • 说明:这是 known_hosts 文件的备份副本。SSH 客户端在更新 known_hosts 时,可能会将旧的条目保存到此文件中,以便恢复。
    • 权限:通常也设置为 600

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

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

相关文章

云轴科技ZStack信创云平台助力上海科技大学实现信创业务落地

编者按 上海科技大学基于“兆芯CPU芯片 云轴科技 ZStack信创云平台 麒麟V10操作系统”构建了全栈信创的校级云平台——上科大Ecloud平台&#xff0c;该平台支撑了上海科技大学的办公业务、教学业务、核心生产业务等业务系统&#xff0c;实现了从VMware平台向国产化软硬件平台的…

使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库

一、使用Docker启动的Redis容器使用的配置文件路径等问题 1.docker启动的redis使用的配置文件路径是什么 使用docker搭建redis服务&#xff0c;本身redis启动的时候可以指定配置文件的&#xff0c; redis-server /指定配置文件路径/redis.conf。 但手上也没有一个redis配置文件…

Docker 安装Postgres和PostGIS,并制作镜像

1. 查找postgres和postgis现有的镜像和版本号 镜像搜索网站&#xff1a;https://docker.aityp.com/ 测试使用的是postgres:15.4 和 postgis:15-3.4 2、镜像拉取 docker pull postgres:15.4docker pull postgis/postgis:15-3.4镜像下载完成&#xff0c;docker images 查看如…

MATLAB和Python电车电池制造性能度量分析

&#x1f3af;要点 分析全电池制造端开路电压曲线&#xff0c;解析电化学指标或特征&#xff0c;了解电池的热力学和动力学特性。测试相同活性材料&#xff08;正极和石墨负极&#xff09;的两批电池&#xff0c;列出模型提取的电化学特征并可视化分析结果。使用类似电压拟合方…

【Next.js 项目实战系列】03-查看 Issue

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c;给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 项目实战系列】02-创建 Issue 查看 Issue 展示 Issue​ 本节代码链接 首先使用 prisma 获取所有…

【算法】KMP字符串匹配算法

目录 一、暴力 二、KMP 2.1 思路 2.2 next数组 2.3 实现 2.4 例题 一个人能走的多远不在于他在顺境时能走的多快&#xff0c;而在于他在逆境时多久能找到曾经的自己。 …

张雪峰:如果你现在是计算机专业,一定要优先报网络安全,它是未来国家发展的大方向

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 “计算机专业 一定要优先报 网络安全 它是未来国家发展的大方向” 为什么推荐学网络安全&#xff1f; “没有网络安全就没有国家安全。”当前&#xff…

与ai一起作诗(《校园清廉韵》)

与ai对话犹如拷问自己的灵魂&#xff0c;与其说ai助力还不如说在和自己对话。 (笔记模板由python脚本于2024年10月19日 19:18:33创建&#xff0c;本篇笔记适合喜欢python和诗歌的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&…

知识点框架笔记3.0笔记

如果基础太差&#xff0c;搞不清基本交规的&#xff08;模考做不到60分&#xff09;&#xff0c;建议找肖肖或者小轩老师的课程看一遍&#xff0c;内容差不多&#xff08;上面有链接&#xff09;&#xff0c;笔记是基于肖肖和小轩老师的科目一课程以及公安部交管局法规&#xf…

w~自动驾驶合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320882 #自动驾驶数据集全面调研 自动驾驶技术在硬件和深度学习方法的最新进展中迅速发展&#xff0c;并展现出令人期待的性能。高质量的数据集对于开发可靠的自动驾驶算法至关重要。先前的数据集调研试图回顾这些数据集&…

[前端] ✨【如何用课程设计提升工程能力?】✨笔记

✨【如何用课程设计提升工程能力&#xff1f;】✨ &#x1f4da; 课程设计真的在语言工具类课程中占据了“C位”&#xff01;&#x1f451;设计得好的课程简直像一个实战训练营&#xff0c;既能帮助学生巩固理论&#xff0c;又能培养解决复杂问题的能力&#xff0c;还能让他们…

Redis --- 第六讲 --- 关于持久化

前言 持久化&#xff1a;MySQL的事务&#xff0c;有四大比较核心的特性 1、原子性 2、一致性 3、持久性 》 把数据存储到硬盘上 》持久&#xff0c;把数据存储在内存上》持久化。重启进程/重启主机之后&#xff0c;数据是否存在。 4、隔离性 Redis是一个内存数据库&#…

消息队列(仿RabbitMQ)—— 生产消费模型

本篇将实现一个3000多行的一个小项目&#xff0c;基于AMQP&#xff08;高级消息队列协议&#xff09;的消息队列&#xff0c;主要仿照 RabbitMQ 实现该代码&#xff0c;其本质也是生产消费模型的一个升级版本。实现的功能为&#xff1a;消息发布端将消息发送到服务器端&#xf…

如何开启华为交换机 http

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

腾讯 C++ 客户端一面,居然遇见了一道简单题。它怎么用go、C++解决

腾讯是目前全国最强的互联网公司之一&#xff0c;它有很好的福利尤其是能给应届生不错的工资待遇。 也正因如此&#xff0c;想进入腾讯工作的难度和竞争的激烈程度非常之大。 虽然感觉腾讯像是更看重个人综合能力的一家公司&#xff0c;算法题的好坏占面评比相对小些 但是竞争…

二、Linux 系统命令

一、系统命令 # 清屏 (Ctrl L) $ clear# 退出登录 $ exit # 历史命令 $ history $ history | grep java -jar 1. 系统信息 # 查看版本&#xff0c;当前操作系统发行版信息 $ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # 查看操作系统位数 $ getco…

【2022工业3D异常检测文献】Patch+FPFH: 结合3D手工点云描述符和颜色特征的异常检测方法

AN EMPIRICAL INVESTIGATION OF 3D ANOMALY DETECTION AND SEGMENTATION 1、Background PatchCore 方法&#xff1a; PatchCore是一种基于2D图像的异常检测方法&#xff0c;它使用预训练的深度学习模型&#xff08;如在ImageNet上预训练的模型&#xff09;来提取图像的局部特…

Memory Bus in SOC

在 SoC架构设计中&#xff0c;Memory Bus 是一个关键的组成部分&#xff0c;它负责连接 SoC 中的各个模块&#xff08;如 CPU、GPU、DMA、外设等&#xff09;与外部存储器&#xff08;如 DDR、NAND、Flash 等&#xff09;&#xff0c;起到连接处理器和存储器之间的桥梁作用&…

Qt优秀开源项目之二十四:EXCEL读写利器QXlsx

QXlsx是基于Qt5/Qt6的Excel文件&#xff08;*.xlsx&#xff09;的读写库。 github地址&#xff1a;https://github.com/QtExcel/QXlsx QXlsx既可以编译成库&#xff0c;也可以直接引用源码QXlsx-master\QXlsx\QXlsx.pri QXls提供了非常丰富的Examples&#xff0c;比如&#xff…

LED电子看板减少人工记录的错误

在当今快节奏的生产和管理环境中&#xff0c;准确性和效率是企业追求的关键目标。而传统的人工记录方式&#xff0c;常常因人为因素而出现各种错误&#xff0c;影响着企业的决策和运营。然而&#xff0c;随着科技的不断进步&#xff0c;LED 电子看板的出现为解决这一难题提供了…