SSH协议详解
简介
SSH只是一个协议,基于这个协议有不同的实现,这些实现中有开源,也有收费。
原理
普通网络通信一般是明文通信,数据容易被中间人拦截并且解析,而SSH协议则提供了基于内容加密服务。
流程:
第一种:口令验证登陆
(1)客户端向远程主机发起登陆链接请求。
(2)远程主机收到用户的登录连接请求,然后把自己的公钥发给客户端。
(3)客户端收到这个公钥,并使用这个公钥,将登录密码加密后,发送到远程主机。
(4)远程主机用自己的私钥,解密登录密码,并验证该密码与当前要登陆的用户密码是否匹配,匹配就同意用户登录。
缺陷:口令验证,主动权在客户端,真正的远程主机可能会被拦截掉,客户端访问的可能是伪装的远程主机,此时客户端收到的密钥是伪装机的,客户端发送加密后的密码后,会被伪装机通过私钥解密,此时伪装机就获取到了真实远程主机的账密,那么真实远程主机的安全就受到了严重威胁。
第二种:密钥验证登陆
前提:客户端在本地生成非对称密钥(公钥、私钥)。并且将公钥放到了远程主机的.ssh/authorized_keys文件中。
(1)客户端向远程主机发起登陆连接请求,附带信息
备注:网上对于附带信息,我目前看到两个版本,一个是:ip,用户名;一个是:公钥信息。对于第一种,我是肯定不赞同,客户端物理位置不定,Ip会变,而且公钥信息中根本没有IP,用户名等信息,所以用IP和用户名在远程主机中定位公钥肯定不行;第二版本我比较赞同,但是目前还有待验证。
(2)远程主机根据附带的信息定位到客户端对应的公钥,然后生成一个随机串并用该公钥加密,然后将生成的加密串发送给客户端。
(3)客户端收到远程主机送来的加密串,然后用自己的私钥解密,再将解密后的字符串送给远程主机。
(4)远程主机接收到解密后的字符串,然后跟自己最初生成的字符串作比较,一样则校验成功,允许与客户端建立登陆链接。
登陆命令行
ssh -p port user@host
user表示远程服务的登录用户名,host表示远程ip ,port表示远程服务的端口号(默认为22,可省略)
---------------------
作者:Mote_
来源:CSDN
原文:https://blog.csdn.net/dreamwbt/article/details/80280557
版权声明:本文为博主原创文章,转载请附上博文链接!
SSH协议详解的更多相关文章
- SSH协议详解(转)
转发的http://blog.csdn.net/macrossdzh/article/details/5691924 很透彻啊,学习了 一.什么是SSH SSH是英文Secure Shell的简写形式 ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- 【转】SSH服务详解
[转]SSH服务详解 第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Gro ...
- SSH命令详解2
ssh命令详解 目录 前言 一.ssh命令 1.Ssh参数解释 2.如何连接远程主机 3.利用Xstart 在windo ...
- 第3章 TCP协议详解
第3章 TCP协议详解 3.1 TCP服务的特点 传输协议主要有两个:TCP协议和UDP协议,TCP协议相对于UDP协议的特点是 面向连接使用TCP协议通信的双方必须先建立连接,完成数据交换后,通信双 ...
- (转)SSH服务详解
SSH服务详解 原文:http://www.cnblogs.com/clsn/p/7711494.html 第1章 SSH服务1.1 SSH服务协议说明SSH 是 Secure Shell Proto ...
- zz:NETCONF协议详解
随着SDN的大热,一个诞生了十年之久的协议焕发了第二春,它就是NETCONF协议.如果你在两年前去搜索NETCONF协议,基本得到的信息都是"这个协议是一个网管协议,主要目的是弥补SNMP协 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- linux高性能服务器编程 (三) --TCP协议详解
第三章 IP协议详解 TCP协议是TCP/IP协议族中的另外一个重要的协议,与IP协议相比,TCP协议更高进应用层.一些重要的socket选项都和TCP协议相关.这一章主要从如下方面学习: 1)TCP ...
随机推荐
- Android 在测试阶段当出现多个测试服务器地址时打包的小技巧
前提:服务端没有做特殊处理 在开发android网络客户端项目时,不可避免的会用到“测试服务器地址”和“云端服务器地址”等.(有时可能会有多个) 这时在打包给测试那帮哥们时,你就需要一个服务器地址打上 ...
- C#/JS AES字符串加密和解密
往往我们有一种需求:在页面端实现对即将传入到后台端的某些字符串进行加密,然后在后台端对传入进来的字符串做解密.在一些有安全要求的数据传输上会用到此种方式 下面分别列出js端和后台端的加密或解密代码. ...
- Nginx 服务器的安装部署(CentOS系统)
1.准备安装环境yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-develgcc编译器 ...
- C# online update demo
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- [清华集训2015 Day2]矩阵变换-[稳定婚姻模型]
Description 给出一个N行M列的矩阵,保证满足以下性质: M>N. 矩阵中每个数都是 [0,N]中的自然数. 每行中, [1,N]中每个自然数刚好出现一次,其余的都是0. 每列中,[1 ...
- 微信小程序 倒计时
这两天在看微信小程序,参考了网上的资料,做了一个倒计时的练习,记录如下. 本文作者:罗兵 原地址:https://www.cnblogs.com/hhh5460/p/9981064.html 0.效果 ...
- JQuery快速入门-Ajax
一.AJAX概述 概念:AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). 优点:通过在后台与服务器进行少量数据交换,AJAX ...
- Js_封装JQ库为插件
//在jQuery匿名函数中,采用jQuery.extend();方法创建jQuery插件 //在jQuery匿名函数中, 采用对象.属性 = 函数的方式创建jQuery插件 (function ($ ...
- PBFT_拜占庭容错算法
根据论文<Practical Byzantine Fault Tolerance and Proactive Recovery>整理 Practical byzantine fault t ...
- es6箭头函数使用场景导致的一些问题
1. 今天在使用draggable组件时,监听dragmove事件时获取到的事件对象有一些异常, 代码如下 draggable.on('drag:move', (event) => { cons ...