ssh问题、原理及diffie hellman算法
1、普通用户无法使用证书登录:原因是权限设置问题
将.ssh目录设为700,authorized_keys设为600即可。
2、查看ssh支持的算法
ssh -Q help
ssh -Q kex/key/mac/cipher
3、查看sshd当前配置的算法(运行时)
sshd -T | grep kex/cipher/key
4、使用特定的kex 或者 hostkey进行ssh登录
ssh -o kexalgorithms=xxxx -o hostkeyalgorithms=xxx users@x.x.x.x
标准的df算法是:diffie-hellman-group-exchange-sha1
5、diffie-hellman算法
公共参数:p质数 g底数
client private temp_key: x
server private temp_key: y
客户端计算:
e=g^x mod p
服务器计算:
f=g^y mod p
双方交换(e,f)
客户计算:
share_key=f^x mod p
服务器计算:
share_key=e^y mod p
计算过程只换底数。x和y的取值为[2..p-2] 好象是这样
说明:diffie-hellman算法有很多版本,每一种算法都不一样。用wireshark抓包时,如果算法不一样,算法协商后的exchange 阶段的包也不一样
6、ssh算法协商阶段,算法选择的原则
以客户端第一个匹配的值为准。
7、ssh大致工作原理:
ssh的安全性主要体现在:1)全程对数据包进行对称加密——cipher指定 2)所有数据包为了保证完整性,都有hash值(md5或sha) ----mac指定 3)可选压缩算法,节省带宽
4)对要连接的主机是否是自己要连接的主机进行确认,理论上讲应该采用CA认证,但考虑实际场景,都是采用对主机的public key的指纹进行人工确认的方式。--hostkey
ssh交互中包的格如下:

在正式进行交互之前,ssh必须首先协商出这个对称加密用的密钥。这里采用diffie hellman算法,也就是kex。
(需要确认) hostkey应该是指的 公钥文件采用的哪种算法:ssh-rsa,还是 dss等等。
8、SSH大致工作原理:
第一阶段:TCP握手---双方发送version信息---双方进行算法通告(五个算法:kex , key ,cipher, mac, zip )--- 各自选择算法 -- 进入DF阶段 -- 各自产生share_key后,彼此发送 new key消息
第二阶段:进入用户验证阶段,包括用户名/密码验证方式及证书验证方式
第三阶段:进入正式交换阶段,主要是channel ID及进程ID
以上三个阶段,除了第一个阶段的前半部分(new_key之前)是明文以外,后面的过程都是密文
9、man sshd_config
这里面有关于sshd_config和ssh_config的详细用法。需要注意的是:客户端并不是把支持的算法都发送给服务器,客户端也有默认算法,可以通过ssh -vvv进入调试模式,看调用哪个配置文件。
如果客户端与服务器连接失败,不要急于换个软件再试。先通过调试模式看看双方都采用了什么算法,如果不匹配,用-Q看看自己支持的全部算法,然后用-o选择一个服务器支持的算法,即可成功。
连接不成功,通常是kex或key无法协商一致造成的。cipher通常是AES/DES,这个部分出现的概率要低一些。当然,最好的方法是将所算法全部人工匹配一下。wireshark/科来capsa都能详细的解出各种算法
ssh问题、原理及diffie hellman算法的更多相关文章
- [转+自]SSH工作原理
SSH工作原理 熟悉Linux的人肯定都知道SSH.SSH是一种用于安全访问远程服务器的网络协议.它将客户端与服务端之间的消息通过加密保护起来,这样就无法被窃取或篡改了.那么它安全性是如何实现的呢? ...
- 深入浅出Diffie–Hellman
一.作者 这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie).马丁·赫尔曼(Martin Edward Hellman)于1976年发表. 二.说明 它是一种安全协 ...
- 浅析Diffie–Hellman
一.作者 这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie).马丁·赫尔曼(Martin Edward Hellman)于1976年发表. 二.说明 它是一种安全协 ...
- SSH加密原理、RSA非对称加密算法学习与理解
首先声明一下,这里所说的SSH,并不是Java传统的三大框架,而是一种建立在应用层和传输层基础上的安全外壳协议,熟悉Linux的朋友经常使 用到一 个SSH Secure Shell Cilent的工 ...
- Atitti 文本分类 以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案
Atitti 文本分类 以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案 1.1. 七.什么是贝叶斯过滤器?1 1.2. 八.建立历史资料库2 1.3. 十.联合概率的计算3 1.4. 十一. ...
- Gamma原理及快速实现算法(C/C++)(转)
源:Gamma原理及快速实现算法(C/C++) 原文:http://blog.csdn.net/lxy201700/article/details/24929013 参考 http://www.cam ...
- ssh登录原理及免密登录配置
ssh登录原理参考: https://www.cnblogs.com/hukey/p/6248468.html ssh登录有两种方式: 1):用户名密码登录 2):基于秘钥的登录 ssh免密登录指的就 ...
- Diffie–Hellman key exchange
General overview[edit] Illustration of the idea behind Diffie–Hellman key exchange Diffie–Hellman ...
- Linux实战教学笔记24:SSH连接原理及ssh-key
目录 第二十四节 SSH连接原理及ssh-key讲解 第1章 SSH服务 1.1 ssh介绍 1.2 知识小结 第2章 ssh结构 2.1 SSH加密技术 第3章 ssh服务认证类型 3.1 基于口令 ...
- SSH 的原理和实践
最近自己在学习使用SSH,现将自己理解的SSH原理和实践SSH的操作写成一篇博客,以供日后查看. 一.SSH是什么?为什么会出现SSH? SSH英文全称是Secure Shell,即安全外壳.首先SS ...
随机推荐
- MVP模式(转)
什么是MVP模式? 这个MVP可不是腾讯游戏<王者荣耀>中的MVP.我们今天要讨论的MVP其实同MVC一样,是一种编程模式和思想,也许更准确地讲是一种架构. MVP和MVC的区别 ...
- 图片上传造成VS关闭
原来的地方:https://q.cnblogs.com/q/129719/ VS2019开启调试,测试图片上传的时候,一点到图片上传,直接导致VS调试崩掉,返回 程序"[14764] iis ...
- 多线程学习(第二天)Java内存模型
一.内存模型基础 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明. 如果编写多线程程序的Java程序员不理解隐式进行的线程之间通信的工作机制,很可 ...
- python中的platform模块
platform模块给我们提供了很多方法去获取操作系统的信息: import platform print(platform.platform())# 获取操作系统名称和版本号:macOS-10.14 ...
- SqlServer查看索引信息
sp_helpindex tablename
- 【ZYNQ学习】ZYNQ简介与Vivado使用
从本篇文章开始,就来记录一下ZYNQ的学习,本篇博客主要介绍ZYNQ是什么以及在vivado中创建一个ZYNQ工程的过程,其中的知识大部分来自于正点原子的ZYNQ教程,感兴趣的可以去看一下他们家的参考 ...
- .NET Core中的AOP
1.AOP的应用场景 AOP全称Aspect Oriented Progarmming(面向切面编程),其实AOP对ASP.NET程序员来说一点都不神秘,你也许早就通过Filter来完成一些通用的功能 ...
- linux服务器项目迁移非常好用的工具scp和rsync
linux系统下一般都安装了,启用一下就可以了 (1):编辑配置文件 # sudo vi /etc/default/rsync #ubuntu # vi /etc/xinetd.d/rsync #c ...
- (jmeter笔记)jmeter导出excel,中文显示乱码
导出excel显示乱码 解决方法:http请求--Content encoding写utf-8 导出如下:
- CentOS 7.9 环境下部署 MySQL 5.7 服务
sudo setenforce Permissive sudo vi /etc/selinux/config SELINUX=permissive sudo systemctl stop firewa ...