文档章节

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

for。
 for。
发布于 2016/07/13 22:58
字数 760
阅读 77
收藏 3
点赞 0
评论 0
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

© 著作权归作者所有

共有 人打赏支持
for。

for。

粉丝 80
博文 47
码字总数 18257
作品 0
深圳
程序员
由SecureCRT引发的思考和学习

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

运维技术 ⋅ 2016/01/07 ⋅ 0

小白学习大数据之路——ssh安装及原理

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

阿亮学长123 ⋅ 2016/12/20 ⋅ 0

OpenSSH dropbear

SSL/TLS: SSL:安全的套接字层;1.0 2.0 3.0 TLS:传输层安全;1.0 1.1 1.2 1.3 SSL会话过程四个阶段: SSL Handshake Protocol: 第一阶段:ClientHello 1.协商所支持的协议的版本,如tls...

杨铄 ⋅ 2017/11/08 ⋅ 0

SSH、SSL与HTTPS

关于加密 在解释SSH、SSL与HTTPS协议之前我先介绍一下非对称加密协议。在1976年以前,所有的加密都采用对称加密,既A使用某种加密规则对信息加密,B收到信息后逆向加密规则解密数据。这通信方...

我在睡觉 ⋅ 2017/03/03 ⋅ 0

openssh网络安全分析

1 背景 SSH协议出现之前,在网络设备管理上广泛应用的一种方式是Telnet。Telnet协议的优势在于通过它可以远程地登录到网络设备上,对网络设备进行配置,为网络管理员异地管理网络设备提供了极...

卢米米 ⋅ 2017/12/17 ⋅ 0

SSH 安全性和配置入门

Roger Hill 在过去 23 年中一直担任大型复杂混合环境中的一名 UNIX®/Linux® 系统工程师和程序员/开发员。在过去 7 年中他主要专注于各种 UNIX、Linux 和 Windows® 平台之间的互通和为这些...

acmfly ⋅ 2013/03/23 ⋅ 0

Linux自学笔记——openssh

ssh:Secure SHell C/S:22/tcp,安全地址登录 Server:OpenSSH(sshd) Client:OpenSSH(ssh,scp), Windows工具 :xshell,putty,securecrt ,sshsecure shell client sshprotocol ve......

claude_liu ⋅ 2017/10/24 ⋅ 0

密钥、证书生成和管理总结

openSSH的ssh-keygen工具 openSSL keytool GPG PGP Putty 其他未整理内容 一、OpenSSH和ssh-keygen OpenSSH是SSH协议的开源版本(SSH:Secure SHell)。使用SSH透过计算机网络实现加密通讯,...

wushank ⋅ 2016/05/11 ⋅ 0

ssh 协议详解

一、 前言 使用SSH可以在本地主机和远程服务器之间进行加密地传输数据,实现数据的安全。而OpenSSH是SSH协议的免费开源实现,它采用安全、加密的网络连接工具代替了telnet、ftp等古老明文传输...

奋斗的阿Q ⋅ 2017/02/07 ⋅ 0

数据加密和解密二

保证安全 为了保证数据在网络中传输的安全, 就涉及到一下方面: 技术: 加密和解密 服务: 身份认证, 访问控制 加密解密算法: 对称加密: 用途: 数据交换; 常用的算法: 3DES, AES, ...... 公钥加...

520的罗 ⋅ 2017/08/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部