[Linux] ssh-key 公钥文件格式
SSH 协议(Secure Shell 协议)最初在 1995 年由芬兰的 Tatu Ylönen 设计开发,由 IETF(Internet Engineering Task Force)的网络工作小组(Network Working Group)制定标准。
Tatu Ylönen 在 1995 年设计 SSH 协议,同年在芬兰成立一家名为 SSH Communications Security Corporation 开发销售 SSH 商用软件。为消除版权影响,OpenSSH 项目在 1999 年 10 月第一次出现在开源世界,该项目创立初衷就是取代 SSH Communications Security Corporation 公司的商用 SSH 软件,OpenSSH 最终成为了如今 Linux 系统标准配置,成为事实上的 SSH 协议标准实现物。
SSH 协议支持口令与密钥两种安全验证模式,但无论那种模式,最终都需要使用密钥来加密数据以确保安全,而 SSH 密钥通常使用使用的算法为 RSA 和 DSA。
在 SSH 1 协议只支持 RSA 算法,SSH 2 协议支持 RSA 和 DSA 算法。从近些年来看,DSA 变得不是那么安全,因此推荐还是使用基于 RSA 算法的密钥来建立 SSH 安全连接。
SSH 密钥的基本使用方法是,随机生成一个私钥文件,这个文件只能由你妥善保管,千万不能泄露给其他人,根据这个私钥算出公钥文件,将公钥文件发送给 SSH 连接对象进行公钥注册。当你请求与对方建立连接时,连接伊始就向对方发送你的公钥,对方将其与已注册公钥进行比对,比对合格则同意建立连接,不合格则可能拒绝连接。请求连接时,对方也会向你发送他的公钥,你也需要确认对方公钥是否合法。一旦双方都确定对方身份合法后,双方就正式建立连接,之后双方的通信均使用对方的公钥加密数据,收到对方使用己方公钥加密的数据后再用己方的私钥对数据进行解密,从而确保了通信数据的安全性。
诸如 Xshell 和 SecureCRT 这类工具都有 SSH 密钥管理功能,可以生成和使用 SSH 密钥进行安全验证。在 Linux 中,OpenSSH 提供了基于 SSH 协议的相关工具可以使用。
SSH 1 公钥格式
$ cat id-rsa1.pub
xavier@Qbee-X
SSH 1 公钥格式为所有字段以单个空格符分隔,各字段依次为选项、位数、指数、系数、注释。第一个字段是可选的,表示该条目(行)是否以数字开头,选项字段不会以数字开头。最后一个字段注释,如果在生成密钥时没有给定注释,默认注释为密钥的创建者(一般就是 username@hostname 这种格式),注释仅仅是提供给用户查看密钥时作为一个辨识标记,在 SSH 使用中没有任何作用。
SSH 2 公钥格式
$ cat id-rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmg/9Hoc98c6AIlEPYK6VqE3ZTlMlfXqn2VgU0NAPXeRmYX+jHYZXA5AxMNTD8KgZIuilK23qzzKBy0hgoO9DDpsBg98Pf4NLkHjTcjpPFX1TBD6RWO/OX/g4uN+gZH1/zoREJa4fit8SSG2V2GoQkqrhfRYCy+a9mQX29ZvOLfYK/aMVjb+yfzLJychdvV3CQkDvkd5R/DHNU6ZQ3pyIEjA/cUQqqmgxQj0f72y8IXv8zesXtjXaaKG17R2oSN1MNDZo/y4m426MYxl4mMQMvM5yR3UvhD93pgNgaR8LY/vspcIeE6cJZsGl21oYtrDZ/GdmF5ulMGwjIDfTJRLvb xavier@Qbee-X
SSH 2 公钥格式为所有字段以单个空格符分隔,各字段依次为选项、密钥类型(keytype)、base64编码后的密钥、注释。第一个字段是可选的,表示该条目(行)是否以数字开头,选项字段不会以数字开头。最后一个字段注释,如果在生成密钥时没有给定注释,默认注释为密钥的创建者(一般就是 username@hostname 这种格式),注释仅仅是提供给用户查看密钥时作为一个辨识标记,在 SSH 使用中没有任何作用。
密钥类型(keytype)可能是 ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-ed25519, ssh-dss 或 ssh-rsa。
SSH 2 - IETF SECSH 公钥格式
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAABIwAAAIEAp7drPA+ZGAZtKNqbVxYWU5
lYPhS5HPZbyozA+KgxPhOLHI1BVoxQfsGae2OUWoy8bpzPib+U
ukILHyuEyct9RWv+3OVgEzxuq4KO9y3sK1pdxycvsKwWgXPiis
LVO3Zf9Dz7hR0wKzC3+IOMXfDpcEyHRVN4sNsCtPXa8BVbSys=
---- END SSH2 PUBLIC KEY ----
IETF 规定的 SSH 公钥格式被定义在 RFC4716 文件,该规范规定:
起始行和结束行必须分别是:
起始行: ---- BEGIN SSH2 PUBLIC KEY ---- 结束行: ---- END SSH2 PUBLIC KEY ----
可以添加其他头部,例如注释 Comment: user@example.com。详情参见 RFC4716。
附:
1. RFC4716
[Linux] ssh-key 公钥文件格式的更多相关文章
- ubuntu git生成ssh key (公钥私钥)配置github或者码云
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git confi ...
- ssh key公钥
在ubuntu上生成ssh key 首先使用 ls -al ~/.ssh 查看本地是否已经有key 如果没有会显示如下: ~$ ls -al ~/.ssh ls: cannot access '/ho ...
- linux ssh key配置方法
转自:http://blog.csdn.net/zzk197/article/details/7915307 一:简洁的配置文件[root@cisco ~]# vi /etc/ssh/sshd_con ...
- Linux SSH使用公钥私钥实现免登陆
公钥和私钥(我是文盲,钥字之前都是读yao,这是多音字这里应该念yue),是成对出现的,一旦任何一个做了更改都会验证失败. 1.免登陆的实现: 使用下例中ssky-keygen和ssh-copy- ...
- Linux SSH: key, agent, keychain
以前遇到过一个问题,在用有些 Linux 发行版时,用 ssh-keygen 产生好了密钥对并上传到了目标服务器,但每次登录都要重新输入. 这与 ssh-agent 有关,看如下 man ssh-ag ...
- linux ssh利用公钥免密登陆
1.安装检查ssh 如果没有ssh的话,需要安装 #yum install -y openssh-server openssh-clients 2.生成秘钥 ssh-keygen -t rsa 执行 ...
- bitbucket 上公钥SSH key如何add key并进行项目运用
前提:从sourcetree 添加项目时老是拉取不下来,查到原因是应为bitbucket需要SSH key公钥 目的:公钥相当于你在任何一台电脑只要有公钥授权就可以随时提交代码到服务器 原因: 1.很 ...
- 在一台电脑上,添加多个Git的ssh key
Git的第一套公秘钥默认名为 id_rsa ,如果你想要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字. 步骤如下:(总共四大操作) 一.生成ssh key 1.生成一个新的自定义 ...
- 【Linux】配置SSH Key到GitHub/GitLab
Linux配置SSH Key到GitHub/GitLab 准备工作 首先检查下本机是否已经安装了SSH,在终端输入ssh即可: 如果没有安装进行yum安装 # yum -y install opens ...
- Linux中ssh介绍与ssh+key密钥登陆部署
环境内核信息: [root@zabbix- ~]# uname -a Linux zabbix- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86 ...
随机推荐
- PPPOE
本质上,它是一个允许在以太网广播域中的两个以太网接口间创建点对点隧道的协议. PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协议,是将 ...
- [Axure RP] – 鼠标滑入按钮时自动下拉表单的设计示例
转:http://blog.qdac.cc/?p=2197 Axure RP 是个好东东呀,大大方便了程序员与客户之间的前期调研时的交流.不过有一些控制并没有鼠标移入和移出的操作,比如 HTML 按钮 ...
- windows环境下面批量移动文件到指定文件夹里面
move D:批量新建文件夹\upload\20171225173033565_2052.jpg D:批量新建文件夹\1623 move D:批量新建文件夹\upload\20171225174344 ...
- PowerShell使用ServicePrincipal登陆Azure
一.打开PowerShell 二.输入下列命令 $pass = ConvertTo-SecureString "<这里换成您的AAD应用密钥>" -AsPlainTex ...
- 安装Logtail(Linux系统)
Logtail客户端是日志服务提供的日志采集客户端,请参考本文档,在Linux服务器上安装Logtail客户端. 支持的系统 支持如下版本的Linux x86-64(64位)服务器: Aliyun L ...
- ceph 生成rpm包
概述 从ceph的源码build出rpm包: #git clone --recursive https://github.com/ceph/ceph.git #./instal-dep.sh 以上两点 ...
- Web前端,HTML5开发,前端资源,前端网址,前端博客,前端框架整理 - 转改
Web前端/H5开发,前端资源,前端网址,前端博客,前端框架整理 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v ...
- MapReduce实现矩阵乘法
简单回想一下矩阵乘法: 矩阵乘法要求左矩阵的列数与右矩阵的行数相等.m×n的矩阵A,与n×p的矩阵B相乘,结果为m×p的矩阵C.具体内容能够查看:矩阵乘法. 为了方便描写叙述,先进行如果: 矩阵A的行 ...
- [svc]sed&awk过滤行及sed常用例子
- sed过滤行 sed '2p' sed '2,5p' sed '2p;3p;4p' - awk过滤行 awk 'NR==2' awk 'NR>=2 && NR <=3' ...
- 无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态)
无意识(无知)-->有意识-->进入潜意识-->无意识(本能状态) 1. 从“无意识-->有意识”的两个重要内容是“反省”+“要努力学习”,估计有80%的人无法跨过这一步 2. ...