关于ssh加密方式的理解
最近公司服务器被挖矿,所以更换了ssh的连接方式,从之前的密码登陆更换为密钥登陆方式,且禁止了密码登陆。所以在配置这个密钥的过程中,顺带了解了些ssh的原理和相关知识。通用的开源
1、ssh是什么,为什么需要ssh,ssh用在哪里
1)ssh是一种协议标准,也叫做安全外壳协议,主要为远程登录会话和其他网络服务提供安全性的协议。全称为Secure SHell,本质上是进行加密的shell。它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。
2)利用 SSH 协议,可以有效防止远程管理过程中的信息泄露问题,而且也能够防止DNS欺骗和IP欺骗,因为传输过程中对数据进行压缩,也提高了传输效率。
3)几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都能 运行SSH。现在主流的开源实现是openssh,当然也有很多商业实现。
2、两种加密方式,ssh的使用方式,ssh支持的两种级别的安全验证
1)加密方式分为两种 对称加密和非对称加密。对称加密顾名思义,数据加密和解密使用同一个密钥,优点是加密强度高,但是缺点是密钥丢失很容易造成安全问题。
ssh是使用非对称加密对数据传输过程进行处理,分为私钥和公钥,在进行数据加密处理的时候通常使用公钥对数据进行加密,私钥进行解密(这里注意仅限于数据加密的时候,签名的时候刚好相反,使用私钥进行签名,公钥进行验签)。且基本不存在通过公钥推导出私钥的可能
a、第一种方式为密码登录。在整个过程中,客户端本身不存有任何密钥。
第一步,客户端输入用户名密码,发出登陆请求。
第二步,服务端接收到请求并返回给客户端公钥以及公钥指纹(公钥指纹是为了防止中间人攻击的产物,是由于公钥本身过长(1024位)而对其hash之后产生的128位的指纹,方便在第一次连接服务端的时候,用户对服务端身份的对比确认。用户确认通过后,该host会被加入到known_hosts。第二次连接时,不需要再次确认服务端身份了。感兴趣可以搜索中间人攻击,如下图)
第三步,客户端收到服务端发送的公钥,对密码进行加密然后将密文发送给服务端
第四步,服务端收到密文,使用私钥将密文进行解密,得到密码并对比确认
第五步,服务端返回给客户端,登陆结果。
b、 第二种方式为公钥登陆,也就是免密登陆。
第一步,客户端生成一对密钥,手动将公钥添加到服务端的authorized_keys中。
第二步,客户端直接发起登陆请求到服务端
第三步,服务端收到请求后,生成随机数R,并使用公钥对随机数R进行加密,得到密文并返回给客户端
第四步,客户端收到密文后,使用私钥对密文解密,得到随机数R。然后用MD5对随机数R和SessionKey进行生成摘要A1,并发送给服务端
第五步,服务端同样用MD5对随机数R和SessionKey进行生成摘要A2,然后对比A1和A2,完成登录确认。
扩展
ssh-keygen是用于生产密钥的工具。
- -t:指定生成密钥类型(rsa、dsa、ecdsa等)
- -P:指定passphrase,用于确保私钥的安全
- -f:指定存放密钥的文件(公钥文件默认和私钥同目录下,不同的是,存放公钥的文件名需要加上后缀.pub)
部分内容和全部图片是从网上拿来用的,如有侵权,联系删除
关于ssh加密方式的理解的更多相关文章
- SSH加密原理、RSA非对称加密算法学习与理解
首先声明一下,这里所说的SSH,并不是Java传统的三大框架,而是一种建立在应用层和传输层基础上的安全外壳协议,熟悉Linux的朋友经常使 用到一 个SSH Secure Shell Cilent的工 ...
- 几个例子理解对称加密与非对称加密、公钥与私钥、签名与验签、数字证书、HTTPS加密方式
# 原创,转载请留言联系 为什么会出现这么多加密啊,公钥私钥啊,签名啊这些东西呢?说到底还是保证双方通信的安全性与完整性.例如小明发一封表白邮件给小红,他总不希望给别人看见吧.而各种各样的技术就是为了 ...
- 常见https,SSH协议和MD5加密方式分析
前言 https,SSH协议和MD5加密是前端可能会接触到的加密,所以我就将他们进行了一个归纳. 1.https 1.1原理 A.就是在http加入SSL层,是http安全的基础;B.htts协议是在 ...
- 对加密方式(公钥私钥)的形象理解(以http和https为例)
https其实就是建构在SSL/TLS之上的 http协议,所以要比较https比http多用多少服务器资源,主要看SSL/TLS本身消耗多少服务器资源. http使用TCP 三次握手建立连接,客户端 ...
- 通过 SSH 隧道方式图形化连接 AIX 服务器
跳转到主要内容 登录 (或注册) 中文 [userid] IBM ID: 密码: 保持登录. 单击提交则表示您同意developerWorks 的条款和条件. 查看条款和条件. 需要一个 IBM ID ...
- DotNet加密方式解析--对称加密
离过年又近了一天,回家已是近在咫尺,有人欢喜有人愁,因为过几天就得经历每年一度的装逼大戏,亲戚朋友加同学的各方显摆,所以得靠一剂年终奖来装饰一个安稳的年,在这里我想起了一个题目“论装逼的技术性和重要性 ...
- 教你如何反编译app,拿到加密方式
大家知道app 有安卓和ios 安卓是apk 现在基本上apk都是经过加密的 想动态脱壳没一定的技术是搞不定的 IOS是ipa 今天我主要讲的是这个 准备好反编译设备 1.一套越狱的ios手机 我 ...
- Android数据加密概述及多种加密方式 聊天记录及账户加密 提供高质量的数据保护
Android数据加密概述及多种加密方式 聊天记录及账户加密 提供高质量的数据保护 数据加密又称password学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文.而解密则是通过解密 ...
- java中常用的加密方式
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...
随机推荐
- Windows下错误码全解析
windows系统下,调用函数出错时.可以调用GetLastError函数返回错误码.但是GetLastError函数返回值是DWORD类型,是一个整数.如果想要知道函数调用的真正错误原因,就需要对这 ...
- dubbo之只订阅及只注册
只订阅 问题 如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务,所以需要将服务同时注册到两个注册中心,但却 ...
- 读书笔记「Python编程:从入门到实践」_9.类
9.1 创建和使用类 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想. OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把 ...
- 【sqli-labs】 less4 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)
提交id参数 加' http://localhost/sqli/Less-4/?id=1' 页面正常,添加" http://localhost/sqli/Less-4/?id=1" ...
- php常用字符串和例子
//输出一个或多个字符串 //注:echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以 $a = "admin1"; $b = & ...
- CorelDRAW关于使用鼠标的5个技巧分享
CorelDRAW重度依赖者对快捷键和技巧性的操作爱不释手.本文我们介绍使用CorelDRAW关于鼠标操作的5个技巧,这是五种超快,非常有效,特别实用的技巧,如果每天的工作结合这些技巧的使用,效率会大 ...
- Can't find variable: SockJS vue项目
用的vue-cli(webpack-simple模板),在开发环境运行(npm run dev),一直都没有问题,突然在ios的safari中调试,出现报错:Can't find variable: ...
- python时间序列按频率生成日期
有时候我们的数据是按某个频率收集的,比如每日.每月.每15分钟,那么我们怎么产生对应频率的索引呢?pandas中的date_range可用于生成指定长度的DatetimeIndex.我们先看一下怎么生 ...
- Java子类对于父类中static方法的继承
今天看到了Java中子类继承父类的一个相关讨论,在网上综合了各家的观点,写下了一篇简短的总结. 问题如下,在父类中含有staic修饰的静态方法,那么子类在继承父类以后可不可以重写父类中的静态方法呢? ...
- 用doxygen风格注释代码生成文档
目录 用doxygen风格注释代码生成文档 1. 说明 2. 具体操作 2.1 生成头部注释 2.2 安装doxygen 2.3 工程配置 3. 总结 用doxygen风格注释代码生成文档 1. 说明 ...