Java实现 SSH 协议的客户端登录认证方式

背景

在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了 解。首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不 同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱 码,SSH 就是众多协议的其中之一。经典的七层 OSI 模型(Open System Interconnection Reference Model )出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服务、接口和协议三个部分,而协议就是说 明本层的服务是如何实现的。SSH、Telnet 协议则主要被使用在用户层中(如图 1 深色部分所示),即应用 层、表现层和会话层。

图 1. 七层 OSI 模型

介绍 SSH

什么 是 SSH

SSH(Secure Shell Protocol)是在一个不安全的网络,进行安全远程登录和其他安全网络服 务的协议。这个定义出自于 IETF(Internet Engineering Task Force)。在 TCP/IP 五层模型中,SSH 是被 应用于应用层和传输层的安全协议。

SSH 的优点

传统的网络传输,如:Telnet、FTP 等,采用 的是明文传输数据和口令,这样很容易被黑客这样的中间人嗅探到传输过程中的数据,大大降低了网络的通信 安全。而 SSH 协议则采用数据加密的方式建立起一个安全的网络传输信道,增强了数据在网络传输过程中的 安全性。数据加密程度的复杂,会导致占用更多的网络资源。SSH 会对加密数据进行一定的压缩操作,从而减 缓对网络带宽的占用。总结起来,SSH 的优点如下:

数据加密,提高安全性

数据压缩,提高网络的传输速度。

SSH 的架构

在对 SSH 有了一个初步的认识之后,我们来看看 SSH 协议是如何做到数据的安全通信 。首先来看下 SSH 协议的主要架构:

图 2. SSH 协议的构成

传输层协议: 通常运行 在 TCP/IP 的上层,是许多安全网络服务的基础,提供了数据加密、压缩、服务器认证以及保证数据的完整性 。比如,公共密钥算法、对称加密算法、消息验证算法等。

用户认证协议:运行在 SSH 协议的传输层 之上,用来检测客户端的验证方式是否合法。

连接协议:运行在用户认证层之上,提供了交互登录会 话、远程命令的执行、转发 TCP/IP 连接等功能,给数据通讯提供一个安全的,可靠的加密传输信道。

SSH 的应用

在实际的工作中,很多目标机器往往是我们无法直接操作的,这些机器可能是一个 公司机房的服务器,也可能是一个远在大洋彼岸的客户环境。这时候我们必须要远程登录到目标机器,执行我 们需要的操作,这样不仅降低了运营成本,也提高了执行效率。我们常见的远程登录协议有 SSH、Telnet 等 。如上文所提到,Telnet 使用的是明文传输,这样对别有用心的“中间人”来说就有了可乘之机,相对 Telnet 协议,SSH 协议的安全性就高了很多。这样的特性,也使得 SSH 协议迅速被推广,很多的大型项目中 都或多或少的使用到了这个协议。下面本文主要讨论 SSH 协议中用户认证协议层,并且下文中统一将远程机 器称为服务器(Server),本地机器称为客户端 (Client)。

时间: 2024-10-31 03:30:32

Java实现 SSH 协议的客户端登录认证方式的相关文章

SSH协议结合Java代码实现对客户端登录认证

在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是http://www.aliyun.com/zixun/aggregation/11991.html">计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱码,SSH 就是众多协议的其中之一.经典的七层 OSI 模型(Open System Interconnecti

java实现ssh协议远程通过中间服务器连接跳转第三方服务器

问题描述 java实现ssh协议远程通过中间服务器连接跳转第三方服务器 java实现ssh协议远程通过中间服务器连接跳转第三方服务器,目前只能连接到中间服务器 ,但是连接第三方服务器怎么实现 求解

Java实现SSH模式加密_java

Java实现SSH模式加密的实现原理思路分享给大家. 一.SSH加密原理 SSH是先通过非对称加密告诉服务端一个对称加密口令,然后进行验证用户名和密码的时候,使用双方已经知道的加密口令进行加密和解密,见下图: 解释:SSH中为什么要使用非对称加密,又使用对称加密,到底有什么用处?到底安全不安全?既然后来又使用了对称加密,开始的时候为什么还要用非对称加密?反过来,既然用非对称加密,为什么又要使用对称加密呢? 非对称加密,是为了将客户端产生的256位随机的口令传递到服务端,那么在传递的过程中,使用公

ssl-Java Tomcat SSL 服务端/客户端双向认证

问题描述 Java Tomcat SSL 服务端/客户端双向认证 http://www.blogjava.net/icewee/archive/2012/06/04/379947.html 按照这个文章做的,但是遇到了错误,,改了几天也改不掉 解决方案 所以都到不了选择继续浏览那一步,,,,,, 解决方案二: 望大神指教,,,研究几天了,,,qq784700042 解决方案三: 1.你的截图里面用的HTTP协议,应该用HTTPS,还要注意端口是否填写正确. 2.检查HTTPS的配置是否正确,最好

Shell批量SSH免交互登录认证

脚本实现功能:批量或单个SSH免交互登录认证 脚本应用场景:当部署集群时,大多数实现要配置好管理节点与从节点的SSH免交互登录,针对这样的情况,写了下面脚本,简化工作. 脚本支持系统:Ubuntu和CentOS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

ssl-https双向认证,对客户端的认证,是协议来完成还是开发人员自己完成

问题描述 https双向认证,对客户端的认证,是协议来完成还是开发人员自己完成 看资料说对客户端证书的认证是在ssl握手时,也就是有协议来完成而不是从请求中获取证书进行判断 是吗?因为公司里的代码看到了这个类X509Certificate然后有一段逻辑,搞得我现在不清楚,https在设置双向认证时,对客户端的认证是协议来完成,还是开发人员自己完成啊 解决方案 看你在什么层次上开发,如果是https协议上,那么就是协议完成,如果是tcp/ip层次上就是自己完成. 解决方案二: 是协议中有这个定义

scoket tcp ip 报文-Java 的 Socket服务端客户端以tcp/ip协议发送接收报文

问题描述 Java 的 Socket服务端客户端以tcp/ip协议发送接收报文 代码谁有模板,比如给你一个login报文,logout报文!!急急急!!! 解决方案 Android Socket 编程(WIFI 和 ADB) 有了发送数据的功能,再发送文件还需要分包等协议. 解决方案二: 这个不知道是不是你要的答案, 解决方案三: http://blog.csdn.net/u013301192/article/details/46336719 解决方案四: 网页上的1楼回复应该对你有用,祝你好运

SSH协议详解(转)

转发的http://blog.csdn.net/macrossdzh/article/details/5691924 很透彻啊,学习了 一.什么是SSH   SSH是英文Secure Shell的简写形式.通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗.使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度.SSH有很多功能,它既可以代替Telnet,又可以为FTP.Pop.甚至为P

Red Flag Asianux Server 3系统管理:SSH协议

SSH(Secure SHell的缩写)是一种用在基于客户机 /服务器方式的两种系统间完成通讯,并http://www.aliyun.com/zixun/aggregation/18736.html">允许用户登录到服务器主机上进行远程控制的协议.与 ftp.telnet等其他远程通信协议不同的是, ssh对登录会话进行加密,使入侵者无法收集加密的口令. SSH是用来取代原来的那些古老的.不安全的用来登录远程主机的安全终端应用程序,例如 telnet. rsh.一个被称作 SCP的程序取代