ssh协议原理.docx

上传人:b****7 文档编号:10537013 上传时间:2023-02-21 格式:DOCX 页数:9 大小:21.88KB
下载 相关 举报
ssh协议原理.docx_第1页
第1页 / 共9页
ssh协议原理.docx_第2页
第2页 / 共9页
ssh协议原理.docx_第3页
第3页 / 共9页
ssh协议原理.docx_第4页
第4页 / 共9页
ssh协议原理.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

ssh协议原理.docx

《ssh协议原理.docx》由会员分享,可在线阅读,更多相关《ssh协议原理.docx(9页珍藏版)》请在冰豆网上搜索。

ssh协议原理.docx

ssh协议原理

竭诚为您提供优质文档/双击可除

ssh协议原理

  篇一:

ssh协议详解

  1、概念

  ssh的英文全称为secureshell,是ietF(internetengineeringtaskForce)的networkworkinggroup所制定的一族协议,其目的是要在非安全网络上提供安全的远程登录和其他安全网络服务。

  2、基本框架

  ssh协议框架中最主要的部分是三个协议:

传输层协议、用户认证协议和连接协议。

同时ssh协议框架中还为许多高层的网络安全应用协议提供扩展的支持。

它们之间的层次关系可以用如下图1来表示:

  图1ssh协议的层次结构示意图

  在ssh的协议框架中,传输层协议(thetransportlayerprotocol)提供服务器认证,数据机密性,信息完整性等的支持;用户认证协议(theuserauthenticationprotocol)则为服务器提供客户端的身份鉴别;连接协议(theconnectionprotocol)将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用;各种高层应用协议可以相对地独立于ssh基本体系之外,并依靠这个基本框架,通过连接协议使用ssh的安全机制。

  3、主机密钥机制

  对于ssh这样以提供安全通讯为目标的协议,其中必不可少的就是一套完备的密钥机制。

由于ssh协议是面向互联网网络中主机之间的互访与信息交换,所以主机密钥成为基本的密钥机制。

也就是说,ssh协议要求每一个使用本协议的主机都必须至少有一个自己的主机密钥对,服务方通过对客户方主机密钥的认证之后,才能允许其连接请求。

一个主机可以使用多个密钥,针对不同的密钥算法而拥有不同的密钥,但是至少有一种是必备的,即通过dss算法产生的密钥。

关于dss算法,请参考[Fips-186]。

  ssh协议关于主机密钥认证的管理方案有两种,如下图2所示:

  图2ssh主机密钥管理认证方案示意图

  每一个主机都必须有自己的主机密钥,密钥可以有多对,每一对主机密钥对包括公开密钥和私有密钥。

在实际应用过程中怎样使用这些密钥,并依赖它们来实现安全特性呢?

如上图所示,ssh协议框架中提出了两种方案。

  在第一种方案中,主机将自己的公用密钥分发给相关的客户机,客户机在访问主机时则使用该主机的公开密钥来加密数据,主机则使用自己的私有密钥来解密数据,从而实现主机密钥认证,确定客户机的可靠身份。

在图2(a)中可以看到,用户从主机a上发起操作,去访问,主机b和主机c,此时,a成为客户机,它必须事先配置主机b和主机c的公开密钥,在访问的时候根据主机名来查找相应的公开密钥。

对于被访问主机(也就是服务器端)来说则只要保证安全地存储自己的私有密钥就可以了。

  在第二种方案中,存在一个密钥认证中心,所有系统中提供服务的主机都将自己的公开

  密钥提交给认证中心,而任何作为客户机的主机则只要保存一份认证中心的公开密钥就可以了。

在这种模式下,客户机在访问服务器主机之前,还必须向密钥认证中心请求认证,认证之后才能够正确地连接到目的主机上。

  很显然,第一种方式比较容易实现,但是客户机关于密钥的维护却是个麻烦事,因为每次变更都必须在客户机上有所体现;第二种方式比较完美地解决管理维护问题,然而这样的模式对认证中心的要求很高,在互联网络上要实现这样的集中认证,单单是权威机构的确定就是个大麻烦,有谁能够什么都能说了算呢?

但是从长远的发展来看,在企业应用和商业应用领域,采用中心认证的方案是必要的。

  另外,ssh协议框架中还允许对主机密钥的一个折中处理,那就是首次访问免认证。

首次访问免认证是指,在某客户机第一次访问主机时,主机不检查主机密钥,而向该客户都发放一个公开密钥的拷贝,这样在以后的访问中则必须使用该密钥,否则会被认为非法而拒绝其访问。

  4、字符集和数据类型

  ssh协议为了很好地支持全世界范围的扩展应用,在字符集和信息本地化方面作了灵活的处理。

首先,ssh协议规定,其内部算法标识、协议名字等必须采用us-ascii字符集,因为这些信息将被协议本身直接处理,而且不会用来作为用户的显示信息。

其次,ssh协议指定了通常情况下的统一字符集为iso10646标准下的utF-8格式,详细请参考RFc-2279。

另外,对于信息本地化的应用,协议规定了必须使用一个专门的域来记录语言标记(languagetag)。

对于大多数用来显示给用户的信息,使用什么样的字符集主要取决于用户的终端系统,也就是终端程序及其操作系统环境,因而对此ssh协议框架中没有作硬性规定,而由具体实现协议的程序来自由掌握。

  除了在字符、编码方面的灵活操作外,ssh协议框架中还对数据类型作了规定,提供了七种方便实用的种类,包括字节类型、布尔类型、无符号的32位整数类型、无符号的64位整数类型、字符串类型、多精度整数类型以及名字表类型。

下面分别解释说明之:

  

(1)字节类型(byte)

  一个字节(byte)代表一个任意的8字位值(octet)[RFc-1700]。

有时候固定长度的数据就用一个字节数组来表示,写成byte[n]的形式,其中n是数组中的字节数量。

  

(2)布尔类型(boolean)

  一个布尔值(boolean)占用一个字节的存储空间。

数值0表示“假”(False),数值1表示“真”(tRue)。

所有非零的数值必须被解释成“真”,但在实际应用程序中是不能给布尔值存储0和1意外的数值。

  (3)无符号的32位整数类型(unit32)

  一个32字位的无符号整型数值,由按照降序存储的四个字节构成(降序即网络字节序,高位在前,低位在后)。

例如,有一个数值为63828921,它的十六进制表示为0x03cdF3b9,在实际存储时就是03cdF3b9,具体存储结构的地址分配如图3。

  图3无符号32位整数类型的典型存储格式

  (4)无符号的64位整数类型(unit64)

  一个64字位的无符号整型数值,由按照降序存储的八个字节构成,其具体存储结构与32位整数类似,可以比照图3。

  (5)字符串类型(string)

  字符串类型就是任意长度的二进制序列。

字符串中可以包含任意的二进制数据,包括空字符(null)和8位字符。

字符串的前四个字节是一个unit32数值,表示该字符串的长度(也就是随后有多少个字节),unit32之后的零个或者多个字节的数据就是字符串的值。

字符串类型不需要用空字符来表示结束。

  字符串也被用来存储文本数据。

这种情况下,内部名字使用us-ascii字符,可能对用户显示的文本信息则使用iso-10646utF-8编码。

一般情况字符串中不应当存储表示结束的空字符(null)。

  在图4中举例说明字符串“myabc”的存储结构:

  图4字符串类型的典型存储格式

  从图4中可以很明显地看出,字符串类型所占用的长度为4个字节加上实际的字符个数(字节数),即使没有任何字符的字符串也要占用四个字节。

这种结构与pascal语言中的字

  符串存储方式类似。

  (6)多精度整数类型(mpint)

  多精度的整数类型实际上是一个字符串,其数据部分采用二进制补码格式的整数,数据部分每个字节8位,高位在前,低位在后。

如果是负数,其数据部分的第一字节最高位为1。

如果恰巧一个正数的最高位是1时,它的数据部分必须加一个字节0x00作为前导。

需要注意的是,额外的前导字节如果数值为0或者255时就不能被包括在整数数值内。

数值0则必须被存储成一个长度为零的字符串(string)。

多精度整数在具体运算时还是要遵循正常的整数运算法则的。

其存储格式通过图5的若干示例来说明:

  图5多精度整数类型的典型存储格式

  (7)名字表类型(name-list)

  名字表(name-list)是一个由一系列以逗号分隔的名字组成的字符串(string)。

在存储方式上与字符串一样,名字表前四个字节是一个unit32型整数以表示其长度(随后的字节数目,类似于字符串类型),其后跟随着由逗号分隔开的一系列名字,可以是0个或者多

  篇二:

ssh各框架工作原理

  ssh各框架的工作原理

  struts1的工作原理:

  1.初始化:

struts框架的总控制器actionservlet是一个servlet,它在web.xml中配置成自动启动的servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。

(面向对象思想)

  2.发送http请求:

用户提交表单或通过uRl向web服务器提交请求,请求的数据用http协议传给web服务器。

  

  3.form填充:

struts的总控制器actionservlet在用户提交请求时将数据放到对应的form对象中的成员变量中。

  4.将请求派发到具体的action处理:

控制器根据配置信息对象actionconfig将请求派发到具体的action,对应的formbean一并传给这个action中的excute()方法。

  5.处理业务:

action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个actionForward对象。

服务器通过actionForward对象进行转发工作。

  6.返回目标响应对象:

action将业务处理的不同结果返回一个目标响应对象给总控制器。

  7.转换http请求到目标响应对象:

总控制器根据action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。

  8.响应用户:

目标响应对象将结果传递给资源对象,将结果展现给用户。

  struts2工作原理:

  1初始化:

客户端初始化一个指向servlet容器(例如tomcat)的请求

  2这个请求经过一系列的过滤器(Filter)

  (这些过滤器中有一个叫做actioncontextcleanup的可选过滤器,这个过滤器对于struts2和其他框架的集成很有帮助,例如:

sitemeshplugin)

  3接着Filterdispatcher被调用,Filterdispatcher询问actionmapper来决定这个请求是否需要调用某个action

  4如果actionmapper决定需要调用某个action,Filterdispatcher把请求的处理交给actionproxy

  5.actionproxy通过configurationmanager询问框架的配置文件,找到需要调用的action类

  6.actionproxy创建一个actioninvocation的实例。

  7actioninvocation实例使用命名模式来调用,在调用action的过程前后,涉及到相关拦截器(interceptor)的调用。

  8.一旦action执行完毕,actioninvocation负责根据struts.xml中的配置找到对应的返回结果。

返回结果通常是(但不总是,也可能是另外的一个action链)一个需要被表示的jsp或者Freemarker的模版。

在表示的过程中可以使用struts2框架中继承的标签。

在这个过程中需要涉及到actionmapper

  在上述过程中所有的对象(action,Results,interceptors,等)都是通过objectFactory来创建的

  spring工作原理:

  1.springmvc请所有的请求都提交给dispatcherservlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

  2.dispatcherservlet查询一个或多个handlermapping,找到处理请求的controller.

  3.dispatcherservlet请请求提交到目标controller

  4.controller进行业务逻辑处理后,会返回一个modelandView

  5.dispathcher查询一个或多个ViewResolver视图解析器,找到modelandView对象指定的视图对象

  6.视图对象负责渲染返回给客户端。

  为什么要使用spring:

  aop让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。

使用aop后,公共服务(比如日志、持久性、事务等)就可以分解成切面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。

  ioc允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。

正如单词倒置所表明的,ioc就像反过来的jndi。

没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straightconstruction),每一个对象都是用其协作对象构造的。

因此是由容器管理协作对象(collaborator)。

  spring即是一个aop框架,也是一ioc容器。

spring最好的地方是它有助于您替换对象。

有了spring,只要用javabean属性和配置文件加入依赖性(协作对象)。

然后可以很容易地在需要时替换具有类似接口的协作对象。

  spring框架是一个分层架构,由7个定义良好的模块组成。

spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式,如图1所示。

  组成spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

每个模块的功能如下:

  核心容器:

核心容器提供spring框架的基本功能。

核心容器的主要组件是beanFactory,它是工厂模式的实现。

beanFactory使用控制反转(ioc)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

  spring上下文:

spring上下文是一个配置文件,向spring框架提供上下文信息。

spring上下文包括企业服务,例如jndi、ejb、电子邮件、国际化、校验和调度功能。

  springaop:

通过配置管理特性,springaop模块直接将面向方面的编程功能集成到了spring框架中。

所以,可以很容易地使spring框架管理的任何对象支持aop。

springaop模块为基于spring的应用程序中的对象提供了事务管理服务。

通过使用springaop,不用依赖ejb组件,就可以将声明性事务管理集成到应用程序中。

  springdao:

jdbcdao抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。

异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。

springdao的面向jdbc的异常遵从通用的dao异常层次结构.

  springoRm:

spring框架插入了若干个oRm框架,从而提供了oRm的对象关系工具,其中包括jdo、hibernate和ibatissqlmap。

所有这些都遵从spring的通用事务和dao异常层次结构。

  springweb模块:

web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供了上下文。

所以,spring框架支持与jakartastruts的集成。

web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

  springmVc框架:

mVc框架是一个全功能的构建web应用程序的mVc实现。

通过策略接口,mVc框架变成为高度可配置的,mVc容纳了大量视图技术,其中包括jsp、Velocity、tiles、itext和poi。

  spring框架的功能可以用在任何j2ee服务器中,大多数功能也适用于不受管理的环境。

spring的核心要点是:

支持不绑定到特定j2ee服务的可重用业务和数据访问对象。

毫无疑问,这样的对象可以在不同j2ee环境(web或ejb)、独立应用程序、测试环境之间重用。

  hibernate工作原理

  1.通过configuration().configure();读取并解析hibernate.cfg.xml配置文件

  2.由hibernate.cfg.xml中的读取并解析映射信息

  3.创建sessionFactory(通过config.buildsessionFactory())

  4.打开sesssion(.sessionFactory.opensession())

  5.创建事务transation(session.begintransaction())

  6.persistentoperate持久化操作

  7.提交事务(session.gettransaction().commit())

  8.关闭session

  9.关闭sesstionFactory

  篇三:

telnet和ssh原理

  telnet/ssh基本知识

  安全检查,所有路由器、交换机必须关闭telnet,要用ssh方法登陆。

telnet:

tcp/ip终端仿真协议(tcp/ipterminalemulationprotocol):

通过tcp建立服务器与客户机之间的连接。

连接后,telnet服务器与客户机进入协商阶段(决定可选项),选定双方都支持连接操作每个连接系统可以协商可选项或重协商旧可选项(在任何时候)。

通常telnet任一端尽量执行所有可选项以实现系统最大化性能。

  在终端使用者的电脑上使用telnet程序,用它连接到服务器。

终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。

可以在本地就能控制服务器。

要开始一个telnet会话,必须输入用户名和密码来登录服务器。

telnet是常用的远程控制web服务器的方法。

  目传统telnet连线会话所传输的资料并未加密,这代表所输入及显示的资料,包括帐号名称及密码等隐密资料,可能会遭其他人窃听,因此有许多服务器会将telnet服务关闭,改用更为安全的ssh。

  ssh:

安装外壳协议(ssh:

secureshellprotocol)

  SSH是一种在不安全网络上提供安全远程登陆及其他安全网络服务的协议.ssh是指secureshell,ssh协议族由ietF(internetengineeringtaskforce)的networkworkinggroup制定,ssh协议的内容ssh协议是建立在应用层和传输层基础上的安全协议.传统的网络服务程序,如Ftp,pop和telnet其本质上都是不安全的;因为它们在网络上用明文传送数据,用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击.就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后在冒充用户把数据传给真正的服务器.ssh是目前比较可靠的远程登录会话和其他网络服务提供安全性的协议.利用ssh协议可以有效防止远程管理过程中的信息泄露问题.通过ssh,可以把所有传输的数据进行加密,也能够防止dns欺骗和ip欺骗.ssh,还有一个额外的好处就是传输的数据是经过压缩的,所以加以加快传输的速度.ssh有很多功能,它既可以代替telnet,又可能为Ftp,popppp提供一个安全的"通道".配置:

  1、首先产生Rsa密钥对:

rsalocal-key-paircreate,这条命令回车以后会出现让你选择是产生512(默认)还是最大2048位密钥。

根据长度不同,产生的时间也不同,等待一下。

完成以后,我们可以利用命令:

disrsalocal-key-pairpublic观看结果。

  (注:

不同型号的交换机命令格式不同。

如:

s3552p-ea型号:

public-keylocalcreatersa)

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1