文档章节

二、ssh 协议:SSH 验证协议 —— 公钥认证

开源中国首席划水狮
 开源中国首席划水狮
发布于 2016/07/13 22:58
字数 760
阅读 347
收藏 3
ssh

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

在密钥交换完成后,进入 SSH 验证协议阶段。这个阶段所有数据加密传输。

所有验证请求必须使用以下消息格式。只定义了前几个域,其余的域依赖于验证方法。

byte    SSH_MSG_USERAUTH_REQUEST
string  user name,采用 ISO-10646 UTF-8 编码[RFC3629]
string  service name,采用 US-ASCII
string  method name,采用 US-ASCII
....    方法特有的域

user name: 用户名。

service name: 规定了验证完成后启动的服务。

method name: 验证方式名。

常用的验证方式有:

keyboard-interactive: 键盘交互验证。

publickey: 公钥认证。

gssapi-with-mic: gssapi 方式认证。

公钥认证方法

1. 客户端请求

客户端可先使用以下消息来询问使用 "publickey" 方法验证是否可被接受。

byte    SSH_MSG_USERAUTH_REQUEST
string  user name,采用 ISO-10646 UTF-8 编码[RFC3629]
string  service name,US-ASCII 编码
string  "publickey"
boolean FALSE
string  public key algorithm name
string  public key blob

public key algorithm name: 公钥算法名。

public key blob: 可包含证书。

2. 服务端响应

服务器必须以 SSH_MSG_USERAUTH_FAILURE 或 SSH_MSG_USERAUTH_PK_OK 进行应答。

1) 公钥算法不支持或者拒绝验证

任何公钥算法都可供用于验证。如果服务器不支持一些算法,它必须简单的拒绝请求。

如果服务器拒绝验证请求,它必须进行如下响应:

byte        SSH_MSG_USERAUTH_FAILURE
name-list   authentications that can continue
boolean     partial success

authentications that can continue: 一个逗号分隔的名称列表,包含服务器认为可用的 'method name' 值。

partial success: 如果验证请求被成功的处理了,则 'partial success' 的值必须为 TRUE,表示需要更多的验证。如果请求没有被成功处理,该值必须为 FALSE。

2) 服务端支持该验证方式

如果服务器支持该公钥算法,则发送:

byte    SSH_MSG_USERAUTH_PK_OK
string  public key algorithm name from the request
string  public key blob from the request

3. 客户端发送

要执行实际的验证,客户端可在其后发送一个用私钥生成的签名。

客户端也可直接发送签名,而不首先检验该密钥是否可接受。发送签名的数据包如下:

byte    SSH_MSG_USERAUTH_REQUEST
string  user name
string  service name
string  "publickey"
boolean TRUE
string  public key algorithm name
string  public key to be used for authentication
string  signature

'signature' 的值是使用私钥对下列数据(按下列顺序)的签名:

string  session identifier
byte    SSH_MSG_USERAUTH_REQUEST
string  user name
string  service name
string  "publickey"
boolean TRUE
string  public key algorithm name
string  public key to be used for authentication

4. 服务端响应

当服务器接收到该消息,它必须检查提供的密钥是否可接受。如果是,还必须检查签名是否正确。如果两个检查都成功,则该方法成功。

服务器也可要求进一步验证。如果不需要更多的验证, 服务器必须以 SSH_MSG_USERAUTH_SUCCESS 响应。

byte    SSH_MSG_USERAUTH_SUCCESS

如果请求失败或需要更多的验证,服务器必须以 SSH_MSG_USERAUTH_FAILURE 响应。

byte        SSH_MSG_USERAUTH_FAILURE
name-list   authentications that can continue
boolean     partial success

参考文档

http://git.oschina.net/lowkey2046/libssh/tree/master/document

© 著作权归作者所有

开源中国首席划水狮

开源中国首席划水狮

粉丝 90
博文 47
码字总数 18257
作品 0
深圳
程序员
私信 提问
加载中

评论(0)

SSH 协议基本原理及 wireshark 抓包分析 ---- VeryGood

摘自:https://juejin.im/post/5baaf517e51d453df0442dce 一、SSH协议简介 我们经常会使用命令登陆我们的linux服务器,如下图所示: 我们也明白这是使用了SSH协议进行登陆,但我们想知道的是,...

LiuYanYGZ
04/09
0
0
由SecureCRT引发的思考和学习

前言 由于业务需要,最近在云上新购买了一批centos7.0的服务器,用脚本批量添加了用户(脚本请见我之前的博客/秘钥认证用户自动控制:http://my.oschina.net/pwd/blog/388254),加完秘钥之后发...

运维技术
2016/01/07
918
0
小白学习大数据之路——ssh安装及原理

预备知识: 1.软链接和硬链接的区别:linux环境下软链接相当于windows环境下的快捷方式,硬链接则是指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都...

阿亮学长123
2016/12/20
35
0
通过SSH服务登陆linux服务器(版本RHEL7)

通过SSH服务登陆linux服务器(版本RHEL7) SSH服务概述:是一种能够以安全的方式提供远程登陆的协议,也是目前远程管理linux系统的首选方式。在此之前,我们一般使用FTP或者telnet来远程登陆...

osc_wtsf7p2s
2018/05/23
8
0
Connection reset by peer

问题:  1 spawn ssh root@91.213.222.197 -p 26002 # 用户名、IP地址、端口号2 sshexchangeidentification: read: Connection reset by peer 解决方案: 1 ssh -v user@server 即: ssh -v......

osc_w1ib22jk
2018/02/05
2
0

没有更多内容

加载失败,请刷新页面

加载更多

window下 mongodb开启用户名和密码 权限

在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证。 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。 坏处是,公网服务器搭建MongoDB...

东东笔记
今天
9
0
数据倾斜

数据倾斜: 两种数据倾斜发生的现象: 80%情况下都发生挂了,只有极少20%情况下能把task执行完成 窄依赖:结构简单,如果发生数据丢失,方便查找丢失的数据 宽依赖:结构复杂,如何发生数据丢...

七宝1
今天
20
0
我的jdk源码(十一):ArrayList

一、概述 ArrayList类是AbstractList的子类,实现了具体的add(), set(), remove()等方法。它是一个可调整大小的数组可以用来存放各种形式的数据。 二、源码分析 (1) 类的声明,源码如下: ...

Java觉浅
昨天
24
0
vnc server,vnc server是什么,vnc工具推荐

nc server是一个用来共享linux服务器上资源给其他分布式用户的服务只要再一台linux系统的机器上安装vnc server,然后开启服务,其他机器就可以通过vncviewer访问这台机器上的共享资源,那么今...

兔子m
昨天
20
0
COLA的扩展性使用和源码研究

cola扩展点使用和设计初探 封装变化,可灵活应对程序的需求变化。 扩展点使用 步骤: 定义扩展点接口,类型可以是校验器,转换器,实体; 必须以ExtPt结尾,表示一个扩展点。 比如,我定义一个...

李福春carter
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部