转载。 https://blog.csdn.net/cjx529377/article/details/77659199

SSH全称是Secure ShellSSH协议是基于应用层的协议为远程登录会话和其他网络服务提供安全性的协议

SSH使用最多的是远程登录和传输文件,实现此功能的传统协议都不安全(ftp,telnet等),因为它们使用明文传输数据。而SSH在传输过程中的数据是加密的,安全性更高。

 
工作原理 
SSH协议是基于非对称加密方法的,服务器和客户端都会生成自己的公钥和私钥。 
(1) 服务器建立公钥。若远程服务器是新系统,会在/etc/ssh目录下生成一个名为ssh_host_ecdsa_key.pub的公钥,同时生成一个名为ssh_host_ecdsa_key的私钥,这一对就是远程服务器的公钥与私钥。之后每回启动sshd服务的时候,系统会自动在此路径下查找公钥。 
远程服务器的公钥: 
 
(2) 客户端请求连接。linux或者mac系统可以直接通过自带的shell连接,指令为ssh user@host,如果客户端和服务器是相同的用户,则可以省去user,直接使用ssh host。 
(3) 服务器发送公钥给客户端。服务器接到请求后,把公钥传给客户端使用。 
(4) 客户端记录服务器公钥并计算自己的公私钥。客户端将服务器传来的公钥记录在~/.ssh/known_hosts中,若是已经记录有该服务器公钥,则比对是否一致,一致后就计算客户端自己的公私钥。 
客户端保存的服务器公钥: 
 
(5) 客户端发送自己的公钥给服务器。客户端将自己的公钥发送给服务器,这样服务器端就有客户端公钥+服务器自己私钥,客户端就有服务器公钥+客户端自己私钥,组成了非对称加密系统。 
(6) 开始双向加解密。服务器发送数据:用客户端公钥加密,客户端收到数据后用自己私钥解密客户端发送数据:用服务器公钥加密,服务器收到数据后用自己私钥解密。 

工作过程 
(1) 版本号协商阶段,SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本 
(2) 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法 
(3) 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证 
(4) 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求 
(5) 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互 
认证方式 
认证方式主要有两种:密码认证和公钥认证。 
密码认证:输入账号密码进行认证。 
公钥认证:需要客户端生成一对公私钥,使用ssh-keygen生成,保存在~/.ssh路径下,然后使用指令ssh-copy-id user@host传到服务器端,以后再登录认证的时候,客户端自动发送公钥给服务器,服务对比一致则通过认证,不要繁琐地输入密码了。 
客户端生成的登录公钥: 
 
服务器端接收的客户端登录公钥: 
 
这一篇文章主要记录ssh协议的工作原理及过程,接下来还会写一篇ssh协议涉及的安全威胁及解决办法。

欢迎关注微信公众号:shoshana

SSH协议(1)-工作原理及过程的更多相关文章

  1. SPI协议及工作原理分析

    说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...

  2. TCP协议通讯工作原理

    TCP协议通讯工作原理   一.TCP三次握手 传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议.面向连接是指一次正常的TCP传输需要通过在TCP ...

  3. @清晰掉 spi协议及工作原理分析

    说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html 一.概述. SPI, Serial Perripheral ...

  4. 网络数据传输安全及SSH与HTTPS工作原理

    本节内容 网络数据传输安全概述 数据加密算法分类 SSH工作原理 HTTPS工作原理 参考资料 个人一直在努力推动git在公司内部的普及和使用,前些日子在公司内部做了一次分享课,给大家介绍了下项目发布 ...

  5. FTP协议及工作原理

    1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文 ...

  6. FTP协议及工作原理详解

    1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文 ...

  7. ssh框架的工作原理

    struts2的工作原理 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClea ...

  8. SPI协议及其工作原理浅析

    转载自:http://bbs.chinaunix.net/thread-1916003-1-1.html一.概述. SPI, Serial Perripheral Interface, 串行外围设备接 ...

  9. SPI协议及其工作原理浅析【转】

    转自:http://www.laoliu-soft.net/category/tech_chap/tech_linux/ 一.概述. SPI, Serial Perripheral Interface ...

随机推荐

  1. Git 相关使用

    https://www.cnblogs.com/mengdd/p/3447464.html 删除本地 & 远程 的分支.   删除本地分支 命令行 : $ git branch -d < ...

  2. 2019 ICPC 沈阳网络赛 J. Ghh Matin

    Problem Similar to the strange ability of Martin (the hero of Martin Martin), Ghh will random occurr ...

  3. vue日常学习

    1.$refs可以用来进行父子级间通信.ref被用于作为子组件的索引ID,用以方便的在js中直接访问子组件.用法如下parent.$refs.idname 使用方法: 在父级元素上加上ref属性 &l ...

  4. ElasticSearch java客户端更新时出现的错误:NoNodeAvailableException[None of the configured nodes are available

    下午尝试 用ElasticSearch  的java客户端去做数据检索工作,测试了一下批量更新,代码如下: public static void bulkUpdateGoods(List<Goo ...

  5. STL算法之find

    定义 template <class InputIterator, class T> InputIterator find (InputIterator first, InputItera ...

  6. 代码检查p626

    1 编译运行p626 图10-3代码,提交编译运行的截图 2 STDOUT_FILENO的值是多少?提交在Ubuntu中查找这个值的命令截图

  7. 关于Vmvare虚拟机中Linux系统不能全屏的问题

    安装虚拟机后并加载ubuntu后,发现界面一直是正方形的,真是神了. 但是当时沉迷学习,这点小细节并没有什么影响,就没有管它. 嗯.... 现在,为了追求完美,是时候让它全屏了,可无论怎样搞,怎样百度 ...

  8. python 设计模式之模板方法模式

    1.模板方法模式定义 模板模式定义如下:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤.子类实现的具体方法叫作基本方法,实现对 ...

  9. C#实现简单的 Ping 的功能,用于测试网络是否已经联通

    /// <summary> /// 是否能 Ping 通指定的主机 /// </summary> /// <param name="ip">ip ...

  10. Javescript——API连接 && json数据处理(待续)

    原文链接1:How to Connect to an API with JavaScript 原文链接2:How to Use the JavaScript Fetch API to Get JSON ...