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都能详细的解出各种算法

最新文章

  1. 魅族M8时期写过几个app,纪念一下曾经的自己
  2. [转]NopCommerce How to code my own payment method
  3. sublime安装package control组件
  4. Beta项目冲刺 --第一天
  5. svg学习(一)
  6. egit - not authorized
  7. 结构体用于map,set时要重载运算符<
  8. JAVA操作数据库插入中文表中显示乱码的解决方法
  9. 【插件】WordPress缓存最佳组合:DB Cache Reloaded Fix + Hyper Cache
  10. ASP.NET批量下载服务器端指定目录文件
  11. 性能测试分享:Jmeter多机协作原理
  12. c++(排序二叉树删除)
  13. ffmpeg命令行循环推流
  14. apache设置跨域请求
  15. js 动态添加class封装(es6语法)
  16. vue.js 自带阻止默认事件 阻止冒泡
  17. 【学习总结】C-翁恺老师-入门-第3周<循环>
  18. WEB框架本质和第一个Django实例
  19. [原]windows sdk版本不对
  20. 微信小程序——3、逻辑js文件

热门文章

  1. Qt 一键部署脚本
  2. Mybatis开发之mapper代理实现自定义接口(常用)
  3. liunx设置QQ邮箱报警
  4. for in | for in 比较 解释 | 以后找知识点先从这里面搜索
  5. python的GIL全局解释器锁
  6. GrADS 读取NetCDF和HDF的ctl文件 SDF文件的描述文件
  7. 面试官:来说说 https 和 http 区别?
  8. .Net Core WebApi 控制器自动创建文件夹上传图片
  9. sap IUT255 Integration of SAP CRM and SAP IS-U_EN_Col62.pdf
  10. unity 变体 随手记