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。

SSH工作过程简介和SSH协议算法集简介的更多相关文章

  1. 2-3 远程管理命令-SSH工作方式简介

    03.远程登录和复制文件 序号 命令 对应英文 作用 01 ssh 用户名@ip secure shell 关机/重启 02 scp 用户名@ip:用户名或路径 用户名@ip:文件名或路径 secur ...

  2. [转+自]SSH工作原理

    SSH工作原理 熟悉Linux的人肯定都知道SSH.SSH是一种用于安全访问远程服务器的网络协议.它将客户端与服务端之间的消息通过加密保护起来,这样就无法被窃取或篡改了.那么它安全性是如何实现的呢? ...

  3. J2EE进阶(十八)基于留言板分析SSH工作流程

    J2EE进阶(十八)基于留言板分析SSH工作流程   留言板采用SSH(Struts1.2 + Spring3.0 + Hibernate3.0)架构.   工作流程(以用户登录为例):   首先是用 ...

  4. TCP工作过程;TCP Flood的攻击的原理和现象;TCP协议设计的安全隐患与防范对策

    TCP分三个阶段 连接建立(三次握手) 数据传输 连接释放(四次挥手) TCP工作过程 TCP连接建立阶段 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给S ...

  5. DNS协议工作过程;DNS的安全隐患

    DNS协议工作过程   下面以域名为m.xyz.com的主机欲通过另一个主机的域名y.abc.com的IP地址为例,简述DNS协议过程. 主机m.xyz.com先向其本地服务器dns.xyz.com进 ...

  6. 【Android - 自定义View】之View的工作过程简介

    View的工作过程分为三个过程: View的measure过程: View的layout过程: View的draw过程. 我们知道,一个Activity就是一个窗口,这个窗口中包含一个Window.一 ...

  7. zookeeper工作原理、安装配置、工具命令简介

    1.Zookeeper简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. 2.zo ...

  8. [转载] zookeeper工作原理、安装配置、工具命令简介

    转载自http://www.cnblogs.com/kunpengit/p/4045334.html 1 Zookeeper简介Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到 ...

  9. SMB2 Protocol – 简介(应用层协议主要用于在计算机间共享文件、打印机、串口等)

    SMB2 Protocol – 简介 SMB协议简介: 服务器信息块(SMB)协议是一个应用层协议主要用于在计算机间共享文件.打印机.串口等. 在介绍SMB协议的时候,一般提到使用的端口为139,44 ...

随机推荐

  1. [Skill]从零掌握正则表达式

    前言 无论你是出于什么原因需要掌握正则表达式(诸如爬虫.文本检索.后端服务开发或Linux脚本),如果之前从没接触过正则表达式(比如我)很容易在如山般的公式中迷失,以至于你在项目写的正则表达式很可能会 ...

  2. day13.常用模块

    一.time与datetime模块 1.1time 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计 ...

  3. Mybatis3源码笔记(一)环境搭建

    1. 源码下载 地址:https://github.com/mybatis/mybatis-3.git. 国内访问有时确实有点慢,像我就直接先fork.然后从git上同步到国内的gitte上,然后在i ...

  4. 2020北航OO第一单元总结

    前言 学习面向对象这门课程的后的第一单元作业,主线是多项式求导,三次作业层层推进,由单一的幂函数求导,到幂函数和三角函数的复合求导,最后再到两种函数的嵌套求导,由两个类到重构后的十几个类,我逐渐对面向 ...

  5. Codeforces Global Round 14 E. Phoenix and Computers

    题目链接 点我跳转 题目大意 给定 \(N\) 台电脑,起初每台电脑都是关闭的 现在你可以随意打开电脑,但如果第 \(i-1\).第 \(i+1\) 台电脑是开启的,则第 \(i\) 台电脑也会自动开 ...

  6. hdu 1867 求两个串的"和"最小 ,KMP

    题意:       给你两个字符串,让你求str1+str2,就是把1的后面和2的前面重叠的地方只显示一遍就行了 abc + bcd = abcd,要求和的长度最小,和最小的前提下求字典序最小,还有就 ...

  7. ASLR 的关闭与开启(适用于 Windows7 及更高版本)

    ASLR 是一种针对缓冲区溢出的安全保护技术,通过对堆.栈.共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术 有的时候 ...

  8. 模板templates的使用

    目录 模板及其渲染 模板查找路径 DTL模板语法 常用的模板标签 DTL常用过滤器 模块结构优化 加载静态文件 模板及其渲染 视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面 ...

  9. Node-Web模块

    创建服务端------------------------------------------------------ var http = require('http'); var fs = req ...

  10. Day002 编译型和解释型语言

    编译型和解释型语言 原文链接 编译型(Compile) 用编译型语言写的程序执行之前,需要一个专门的编译过程,针对特定的平台,使用专门的编译器,把高级语言翻译成机器语言,以后直接运行而不需要再编译了, ...