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 ...
随机推荐
- NSQ(7)-nsq存在的问题
nsq存在的缺陷 部署的难度 nsq提供了一种消费者端进行服务发现的模型,所以无需告诉消费者去哪寻找对于的主题(Topic)在哪个nsqd实例上. 然而,它并没有提供一种方案去解决一个生产者应 ...
- ubuntu-wireshark打开出现错误的问题
The capture session could not be initiated on interface 'enp2s0' (You don't have permission to captu ...
- git的基本操作(一)
pwd: 显示当前所在的目录路径 ls: 列出当前目录的所有文件 touch: 新建一个文件 rm:删除一个文件 mkdir:新建一个目录 rm -r:删除一个目录 mv:移动一个文件到另一个文件中 ...
- 镜像问题、简易安装,系统语言更改,中文输入,提高下载速度,Firefox的语言更改,Firefox上网速度慢
一开始用的镜像不记得是从哪里下载过来的,反正 装好之后分辨率特别低.镜像放在: "D:\迅雷下载\2020大创\Ubuntu\ubuntu-16.04.6-desktop-i386.iso& ...
- RPS网卡多队列
一体机上传1G文件导致服务器很卡,怀疑是网卡未开启多核多队列导致. 脚本如下 #!/bin/bash # Enable RPS (Receive Packet Steering) read -p &q ...
- java基于ssm框架开发的公交查询系统源码公交系统源码公交路线查询项目有论文
简介 java基于ssm的公交路线查询系统,用户可以查询公交站点公交车路线以及公交换乘方案,还可以查看公交车路线地图,以及该站点所有的公交车路线. 演示视频: https://www.ixigua.c ...
- RayLink 远控软件又推出 2 个重磅宝藏功能免费用
你有没有在远程办公时,担心他人偷窥电脑?以致于保密性资料或私密信息,遭到泄露.创意被剽窃......又或是遇到过邻座同事屏幕前明明没人,鼠标箭头却自个浏览起网页的惊悚画面? 如果你有上述情况,建议使用 ...
- c语言 开灯问题 vs2019编译通过
1 #include<stdio.h> 2 #include<stdlib.h> 3 //开灯问题 4 //总共有n盏灯,编号为1~n,k个人 5 //第一个人摁下所有灯的开关 ...
- 通过ASP生成html纯静态页面的简单示例
本站收录这篇文章通过ASP生成html纯静态页面的简单示例,详细解说文章中相关静态 asp 技术与知识,欢迎能给大家一些在这方面的支持和帮助!下面是详细内容: 原理:通过浏览器传送变量,如 http: ...
- 91、mysql批量删除表
## 存储过程实现 drop PROCEDURE if EXISTS rush; create PROCEDURE rush() BEGIN ## 创建临时表,插入快照数据 drop table if ...