当前位置: 首页 > article >正文

为什么SSH协议是安全的?

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.kler.cn/news/358812.html

相关文章:

  • 深入理解 SQL 中的高级数据处理特性:约束、索引和触发器
  • 阿里云验证码短信发送服务搭建(flask)
  • 鸿蒙NEXT开发声明式UI是咋回事?
  • 通达信“钻石顶底,多空涨跌即时提示公式!无限制
  • FastGPT上使用多种大语言模型
  • 网络设备文件管理
  • 飞睿智能超宽带UWB音频传输模块,超低延迟数据传输,实时音频声音更纯净
  • python基本42个命令,所有程序猿都用得到!
  • 印度税收体系 【印度税收】
  • 5年码龄程序员谈关于Java程序员对AI的使用
  • CSS进阶-定位(二)
  • 刷题/学习网站推荐
  • SpringBoot驱动的车辆信息管理平台
  • Java中的单元测试与JUnit
  • 华为OD机试真题---矩阵扩散
  • C++连接Simnow Linux API实现简单量化交易操作文档
  • Java基于SpringBoot微信小程序的跳蚤市场系统设计与实现(lw+数据库+讲解等)
  • 【MR开发】在Pico设备上接入MRTK3(一)——在Unity工程中导入MRTK3依赖
  • PDF工具类源码
  • DML、DDL语句中的相关操作