为什么SSH协议是安全的?

news2024/10/17 9:09:18

SSH的传输层协议(Transport Layer Protocol)和用户鉴权协议(Authentication Protocol)确保数据的传输安全,这里只介绍传输层协议,是SSH协议的基础。

本文针对SSH2协议。

1、客户端连接服务器

服务器默认端口22

2、服务器返回ServerHello

SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u3,其中:
SSH-2.0为协议版本,为固定值
OpenSSH_8.4p1为实现SSH服务的软件,可自定义。
Debian-5+deb11u3为其他注释说明。

格式为:协议版本-软件 备注

3、客户端发送ClientHello给服务器

格式同ClientHello一样

4、客户端和服务端确认算法

确认的算法包括:HostKey算法,密钥交换算法,数据加密算法,数据MAC算法,压缩算法。

客户端和服务端分别告诉对方支持的算法,双方根据自身和对方支持的算法确认最后实际应用到SSH协议的算法。

列举一些常用的算法:

HostKey算法
	ssh-ed25519
	ssh-rsa
	ecdsa-sha2-nistp256
	ecdsa-sha2-nistp384
	ecdsa-sha2-nistp521
密钥交换算法
	curve25519-sha256
	ecdh-sha2-nistp256
	ecdh-sha2-nistp384
	ecdh-sha2-nistp521
	diffie-hellman-group-exchange-sha256
加密算法
	chacha20-poly1305
	aes256-ctr
MAC算法
	hmac-sha1
	hmac-sha2-256
5、密钥交换

服务端使用密钥交换算法生成共享密钥SharedSecret,并使用HostKey算法进行签名。

这一步的签名对安全至关重要。
使用SSH客户端连接服务器时,会询问是否接受服务端的HostKey。
客户端只认你接受的HostKey,可以防止中间人攻击。

双方根据共享密钥生成加密算法加密/解密密钥以及数据MAC算法算法的密钥。

合适的加密算法对安全也很重要。
一般客户端/服务端实现都会优先选择安全和效率最优的算法。
例如:HostKey算法ed25519/ecdsa,密钥交换算法ecdh/curve25519,加密算法chacha20-poly1305等等。
6、完成密钥交换

服务端和户端分别告诉对方(使用SSH_NEWKEY消息)已经准备好连接。
可以进行后续操作,例如用户鉴权,SCP,SFTP,Channel服务等,相关数据都会在加密通道里面传输。

7、参考SSH协议标准

The Secure Shell (SSH) Transport Layer Protocol
The Secure Shell (SSH) Authentication Protocol
The Secure Shell (SSH) Connection Protocol
The Secure Shell (SSH) Public Key File Format
Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
SSH File Transfer Protocol
ssh_config
ssh_command_arguments
在这里插入图片描述

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

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

相关文章

基于springboot实习管理系统

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的,前后端分离。 开发语言:Java数据库:MySQL技术:…

k8s use-context是什么

kubectl 的 use-context 命令用于在 Kubernetes 集群中切换上下文(context),从而方便地在多个集群或命名空间之间进行操作。一个上下文定义了 kubectl 使用的 集群、用户 和 命名空间 的组合。 use-context 的作用: 每个上下文&…

msql事务隔离级别 线上问题

1. 对应代码 解决方式: 在事务隔离级别为可重复读(RR)时,数据库确实通常会记录当前数据的快照。 在可重复读隔离级别下,事务在执行期间看到的数据是事务开始时的数据快照,即使其他事务对数据进行了修改&am…

考研前所学c语言02(2024/10/16)

1.一个十进制的数转化为二进制的就是不断除二取余,得到的余数从下到上取 比如123: 结果为: 同理其他的十进制转八进制,十六进制就除八,除十六即可 再比如123转十六进制: 因为余数是11,十六进…

超详细的finalshell安装数据库以及数据库的基本操作

一、下载 MySQL Enterprise Edition Downloads | Oraclehttps://www.oracle.com/mysql/technologies/mysql-enterprise-edition-downloads.html 这边有不同的版本,要看你的操作系统(centos7 / centos8)安装的是哪个版本 我把连接提取出来了&…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

stm32 F4和F7的硬件CRC保持一致的设置

stm32F4系列的CRC没什么设置选项 逆向一下算法:http://www.ip33.com/crc.html 在stm32F7里面,CRC设置很丰富,如下设置可以和f4算出来的保持一致

HCIP——以太网交换安全(四)DHCP Snooping

目录 一、DHCP Snooping的知识点 二、DHCP Snooping实验拓扑 三、总结 一、DHCP Snooping的知识点 1.1、DHCP snooping 概述: ①DHCP Snooping使能DHCP的一种安全特性,用于保证DHCP客户端从合法的DHCP服务端获取IP地址。DHCP服务器记录DHCP客户端IP…

沐风老师3DMAX地形散布插件TerrainScatter使用方法详解

3DMAX地形散布插件TerrainScatter,根据画定的区域范围和地形起伏,一键种植树木、批量摆放建筑等,对于熟练3dmax的用户,也可以使用TerrainScatter插件制作屋顶摆放瓦片的效果。该插件工作方式是将源对象的副本放置到闭合曲线范围内…

香港科技大学广州|可持续能源与环境学域博士招生宣讲会—大连理工大学专场!!!(暨全额奖学金政策)

香港科技大学广州|可持续能源与环境学域博士招生宣讲会—大连理工大学专场!!!(暨全额奖学金政策) ⏰时间:2024年10月24日(星期四)16:00 🏠地点:…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一:暴力O(N^2)1.2.2 思路二:hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…

操作系统实验一:Linux进程管理及其扩展

实验目的: 通过实验,加深理解进程控制块、进程队列等概念,了解进程管理的具体实施方法。 实验内容: 1. 阅读并分析Linux内核源代码,了解进程控制块、进程队列等数据结构; 2. 实现一个系统调用&#xff…

基于springboot留守儿童爱心网站

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的,前后端分离。 开发语言:Java数据库:MySQL技术:…

C++核心编程和桌面应用开发 第十一天(静态转换 动态转换 常量转换 重新解释转换)

目录 1.静态类型转换 1.1语法 1.2用法 2.动态类型转换 2.1语法 2.2用法 3.常量类型转换 3.1语法 3.2用法 4.重新解释转换 4.1语法 1.静态类型转换 1.1语法 static_cast<目标转换类型>(待转换变量) 1.2用法 可用于基本数据类型之间的转换。比如int和char之…

Input-Source-Pro:自动切换输入法并提示状态

Input Source Pro 是一款 macOS 上的输入法辅助工具&#xff0c;它可以根据不同应用、不同网站来自动切换输入法&#xff0c;并可以在鼠标周围显示当前输入法状态。 macOS 不像 Windows 那样能保存输入法状态&#xff0c;因此这样的软件还是挺有用的。 ‍ 介绍 官网&#x…

前后端请求一致性学习

在进行前后端分离开发项目的过程中&#xff0c;前后端同学往往需要依照接口文档的基本信息以及相应的响应格式进行接口请求的开发&#xff0c;在这个过程中涉及到常见的Get、Post、Put、Patch等等的请求&#xff0c;相应的前后端的书写格式是什么&#xff0c;这篇文章进行一个记…

keil 配置栈溢出保护(arm)

1.前提是keil 配置为arm-gcc 编译器环境 2.配置编译项加上 -fstack-protector-strong 栈溢出的测试代码: void aaa(int a, char c) { char arr[5]; arr[a] = c; } aaa(8, d);//任意地方调用,超过数组arr的元素 添加代码栈溢出检测: uint32_t __stack_chk_gua…

WhatsApp防死号应该怎么做?

“WhatsApp又死号了”——外贸人的噩梦每天都会上演。号损是小事&#xff0c;重要是是成千上万的客户累计与聊天记录被一扫而空&#xff0c;所以相信我&#xff0c;当你准备好最WhatsApp&#xff0c;那么WhatsApp账号养成的操作从一开始就要注意并且牢记&#xff01;下面给大家…

Golang | Leetcode Golang题解之第482题秘钥格式化

题目&#xff1a; 题解&#xff1a; func licenseKeyFormatting(s string, k int) string {ans : []byte{}for i, cnt : len(s)-1, 0; i > 0; i-- {if s[i] ! - {ans append(ans, byte(unicode.ToUpper(rune(s[i]))))cntif cnt%k 0 {ans append(ans, -)}}}if len(ans) &…

Unity Spine优化思路

最近终于闲下来了&#xff0c;于是开始把近期探索到的unity相关优化整理起来。 我们的项目采用的人物表现方式是spine动画&#xff0c;这在2D游戏里算比较常见的解决方案了&#xff0c;但是里面有一些设置需要提前注意一下&#xff0c;否则会造成不必要的性能浪费。 养成读官…