SSH工作过程简介和SSH协议算法集简介
SSH简介
SSH是Secure Shell(安全外壳)的简称,是一种在不安全的网络环境中,通过加密机制和认证机制,实现安全的远程访问以及文件传输等业务的网络安全协议。
SSH协议采用了典型的客户端/服务器模式,并基于TCP协议协商建立用于保护数据传输的会话通道。SSH协议有两个版本,SSH1.x和SSH2.0(本文简称SSH1和SSH2),两者互不兼容。SSH2在性能和安全性方面比SSH1有所提高。
SSH工作过程
阶段 |
说明 |
连接建立 |
SSH服务器在22号端口侦听客户端的连接请求,在客户端向服务器端发起连接请求后,双方建立一个TCP连接 |
版本协商 |
双方通过版本协商确定最终使用的SSH版本号 |
算法协商 |
SSH支持多种算法,双方根据本端和对端支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法,以及用于数据完整性保护的HMAC算法 |
密钥交换 |
双方通过DH(Diffie-Hellman Exchange)交换,动态地生成用于保护数据传输的会话密钥和用来标识该SSH连接的会话ID,并完成客户端对服务器端的身份认证 |
用户认证 |
SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 |
会话请求 |
认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务(目前支持Stelnet、SFTP、SCP、NETCONF),即请求与服务器建立相应的会话 |
会话交互 |
会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互 该阶段,用户在客户端可以通过粘贴文本内容的方式执行命令,但文本会话不能超过2000字节,且粘贴的命令最好是同一视图下的命令,否则服务器可能无法正确执行该命令。如果粘贴的文本会话超过2000字节,可以采用将配置文件通过SFTP方式上传到服务器,利用新的配置文件重新启动的方式执行这些命令 |
本地密钥对
功能简介
服务器端的DSA、ECDSA或RSA密钥对有两个用途,其一是用于在密钥交换阶段生成会话密钥和会话ID,另外一个是客户端用它来对连接的服务器进行认证。客户端验证服务器身份时,首先判断服务器发送的公钥与本地保存的服务器公钥是否一致,确认服务器公钥正确后,再使用该公钥对服务器发送的数字签名进行验证。
虽然一个客户端只会采用DSA、ECDSA或RSA公钥算法中的一种来认证服务器,但是由于不同客户端支持的公钥算法不同,为了确保客户端能够成功登录服务器,建议在服务器上同时生成DSA、ECDSA和RSA三种密钥对。
- 生成RSA密钥对时,将同时生成两个密钥对——服务器密钥对和主机密钥对。SSH1利用SSH服务器端的服务器公钥加密会话密钥,以保证会话密钥传输的安全;SSH2通过DH算法在SSH服务器和SSH客户端上生成会话密钥,不需要传输会话密钥,因此SSH2中没有利用服务器密钥对。
- 生成DSA密钥对时,只生成一个主机密钥对。SSH1不支持DSA算法。
- 生成ECDSA密钥对时,只生成一个主机密钥对
SSH协议算法集简介
设备作为服务器或者客户端与对端建立Stelnet、SFTP、SCP会话过程中,将使用指定的算法优先列表进行协商。指定的算法包括:
- 密钥交换算法
- 主机签名算法
- 加密算法
- MAC算法
协商过程中,客户端采用的算法匹配顺序为优先列表中各算法的配置顺序,服务器根据客户端的算法来匹配和协商。
H3C高端设备配置SSH2协议密钥交换算法优先列表
(1) 进入系统视图。
system-view
(2) 配置SSH2协议密钥交换算法优先列表。
(非FIPS模式)
ssh2 algorithm key-exchange { dh-group-exchange-sha1 | dh-group1-sha1 | dh-group14-sha1 | ecdh-sha2-nistp256 |ecdh-sha2-nistp384 } *
缺省情况下,SSH2协议采用的缺省密钥交换算法从高到底的优先级列表为ecdh-sha2-nistp256、ecdh-sha2-nistp384、dh-group-exchange-sha1、dh-group14-sha1和dh-group1-sha1。
(FIPS模式)
ssh2 algorithm key-exchange { dh-group14-sha1 | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 } *
缺省情况下,SSH2协议采用的缺省密钥交换算法从高到底的优先级列表为ecdh-sha2-nistp256、ecdh-sha2-nistp384和dh-group14-sha1。
H3C高端设备配置SSH2协议主机签名算法优先列表
(1) 进入系统视图。
system-view
(2) 配置SSH2协议主机签名算法优先列表。
(非FIPS模式)
ssh2 algorithm public-key { dsa | ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa | x509v3-ecdsa-sha2-nistp256 |x509v3-ecdsa-sha2-nistp384 } *
缺省情况下,SSH2协议使用的缺省主机签名算法从高到底的优先级列表为x509v3-ecdsa-sha2-nistp256、x509v3-ecdsa-sha2-nistp384、ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、rsa和dsa。
(FIPS模式)
ssh2 algorithm public-key { ecdsa-sha2-nistp256 | ecdsa-sha2-nistp384 | rsa | x509v3-ecdsa-sha2-nistp256 | x509v3-ecdsa-sha2-nistp384 } *
缺省情况下,SSH2协议使用的缺省主机签名算法从高到底的优先级列表为x509v3-ecdsa-sha2-nistp256、x509v3-ecdsa-sha2-nistp384、ecdsa-sha2-nistp256、ecdsa-sha2-nistp384和rsa。
H3C高端设备配置SSH2协议加密算法优先列表
(1) 进入系统视图。
system-view
(2) 配置SSH2协议加密算法优先列表。
(非FIPS模式)
ssh2 algorithm cipher { 3des-cbc | aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm | des-cbc } *
缺省情况下,SSH2协议采用的缺省加密算法从高到底的优先级列表为aes128-ctr、aes192-ctr、aes256-ctr、aes128-gcm、aes256-gcm、aes128-cbc、3des-cbc、aes256-cbc和des-cbc。
(FIPS模式)
ssh2 algorithm cipher { aes128-cbc | aes128-ctr | aes128-gcm | aes192-ctr | aes256-cbc | aes256-ctr | aes256-gcm } *
缺省情况下,SSH2协议采用的缺省加密算法从高到底的优先级列表为aes128-ctr、aes192-ctr、aes256-ctr、aes128-gcm、aes256-gcm、aes128-cbc和aes256-cbc。
H3C高端设备配置SSH2协议MAC算法优先列表
(1) 进入系统视图。
system-view
(2) 配置SSH2协议MAC算法优先列表。
(非FIPS模式)
ssh2 algorithm mac { md5 | md5-96 | sha1 | sha1-96 | sha2-256 | sha2-512 } *
缺省情况下,SSH2协议使用的缺省MAC算法从高到底的优先级列表为sha2-256、sha2-512、sha1、md5、sha1-96和md5-96。
(FIPS模式)
ssh2 algorithm mac { sha1 | sha1-96 | sha2-256 | sha2-512 } *
缺省情况下,SSH2协议使用的缺省MAC算法从高到底的优先级列表为sha2-256、sha2-512、sha1和sha1-96。
最新文章
- nodejs中exports与module.exports的区别
- iOS 利用不等的constraint实现布局间隔调整
- Bootstrap整合ASP.NET MVC验证、jquery.validate.unobtrusive
- centos 7 卸载 mariadb 的正确命令
- ASP.NET MVC 3 使用Model自定义验证的样式
- javascript单元测试-jsamine[转]
- [置顶] 正则表达式应用:匹配IP地址
- TransactionScrope 2
- 使用 Rx 中预定义的 Subject
- Linux Ubuntu 14.04安装LAMP(Apache+MySQL+PHP)网站环境
- 第13章 Swing程序设计
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
- HDU5816 Hearthstone
- 利用WindowsServiceWrapper(WinSW)将nginx包装为系统服务
- URL重写中的中文参数问题
- Codeforces 920G - List Of Integers
- vue核心之响应式原理(双向绑定/数据驱动)
- dubbo源码分析(一)-从xml到我们认识的Java对象
- c# C#获取屏幕鼠标坐标点颜色
- 强化Linux安全的10个技能
热门文章
- [C++]一篇文章搞懂C++中五花八门的各种初始化
- 在一些64位的glibc的payload调用system函数失败问题
- 《疯狂Kotlin讲义》读书笔记4——流程控制
- 1.jsp-out和response输出的区别
- OSPF 综合实验
- 微信小程序底部实现自定义动态Tabbar
- IDEA常用个性化设置
- Google字体API使用简单示例
- Python脚本破解图形验证码(tesserocr和pytesseract)
- CVE-2012-0774:Adobe Reader TrueType 字体整数溢出漏洞调试分析