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
2048 65537 22910674242901951372109700514222305911005404382729826828303733202727246271129151780809328111314142444937643708197065336344061806573173759249496873454280552699704169728818376102327988617178797568649601671735522868137145364100426211002912160142668644115040507860106304962512271803001264027359406587863651664228014572232130610186228786600276455187805301282374669236217832825274065088078401281168028793885110785700945596016775112537678694431532570328169049252968039090407234623028954479983169424889698023716686474015246450335458030057416596685148084608420001646747215709382718194528577791195697244767428069870538621149641 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

2. OpenBSD SSHD Manual

转载于:https://www.cnblogs.com/ifantastic/p/3984544.html

[Linux] ssh-key 公钥文件格式相关推荐

  1. vscode 使用ssh密钥登录远程Linux -- vscode remote linux ssh key

    此文首发于我的个人博客:vscode 使用ssh密钥登录远程 Linux – vscode remote linux ssh key - zhang0peter的个人博客 推荐先看文章:Windows ...

  2. github 公钥 私钥_ubuntu git生成ssh key (公钥私钥)配置github或者码云

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git confi ...

  3. win7 linux ssh key,Windows下创建SSH Key并登录Linux服务器

    上一篇文章我给大家普及了在macOS下创建SSH Key并登录Linux服务器的操作,这篇文章带大家了解一下在Windows下创建SSH Key并登录Linux服务器的操作流程. 创建SSH Key ...

  4. git 生成ssh key_ubuntu git生成ssh key (公钥私钥)配置github或者码云

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git confi ...

  5. Git添加多个SSH key公钥

    2019独角兽企业重金招聘Python工程师标准>>> 1,添加第二个远程仓库或者多个以下内容类推即可,例如sohu的 ssh-keygen -t rsa -f ~/.ssh/id_ ...

  6. 代码管理git生成ssh key (公钥私钥)配置GitLab

    git生成ssh key 配置GitLab git在我们日常项目管理中起了很大的作用,是我们能够更好地管理我们的代码,git的管理是基于ssh密钥进行的,所以在使用前我们需要进行ssh配置. 首先我们 ...

  7. Linux SSH使用公钥私钥实现免登陆 以及 登陆失败、公钥失效的处理转

    =====================同级参考资料: <linux--私钥登陆>http://mengsir.blog.51cto.com/2992083/908342 写shell免 ...

  8. Git 如何生成SSH key

    Git 如何生成SSH key 1. 查看 [c盘->用户->用户名->.ssh] 下是否有id_rsa.id_rsa.pub文件,如果没有需要手动生成 2. GIt Bash He ...

  9. Github配置ssh key【不用密码访问Github上代码】

    文章目录 前言 配置SSH 第一步:检查本地主机是否已经存在ssh key 第二步:生成ssh key 第三步:获取ssh key公钥内容(id_rsa.pub) 第四步:Github账号上添加公钥 ...

  10. 如何在Github上配置ssh key的密钥

    Step0 : 解释说明 git使用SSH配置, 初始需要以下三个步骤 使用秘钥生成工具生成rsa秘钥和公钥 将rsa公钥添加到代码托管平台 将rsa秘钥添加到ssh-agent中,为ssh clie ...

最新文章

  1. Hadoop学习笔记:MapReduce框架详解
  2. 【商务智能】商务智能 ( 概念 | 组成 | 过程 )
  3. SAP UI5 jQuery.sap.includeStyleSheet
  4. java xml获取属性值_java – 如何获取具体属性值的特定XML元素?
  5. Java08-java语法基础(七)构造方法
  6. java day_Java_Day7(上)
  7. android toolbar控件,Android Toolbar控件
  8. #绘制圆心_AutoCAD绘制齿轮教程
  9. 黑马程序员最新Python教程——第一阶段(3)第二阶段(1)
  10. 思科/华为计算机网络工程师,软考网络工程师华为、思科指令大全
  11. 如何安装旧版iOS软件?
  12. win10易升_win10上跑Ubuntu不用虚拟机不用双系统!
  13. 论文笔记:Securing Data With Blockchain and AI
  14. GBT 39323-2020 乘用车车道保持辅助(LKA)系统性能要求及试验方法
  15. IT中文技术站十大网站收藏
  16. glTexSubImage2D的使用详解
  17. 首届“中科杯”全国软件设计大赛获奖名单揭晓
  18. 捅了“蚂蚁窝”?怎么大家都在唱《蚂蚁呀嘿》
  19. CustomerList
  20. Python十二章处理Excel电子表格

热门文章

  1. 谣言检测相关论文阅读笔记:DDGCN: Dual Dynamic Graph Convolutional Networks for Rumor Detection on Social Media
  2. 人工智能史话 (一)
  3. 远翔升压FP5207B,外置MOS升压大功率,软启动可调,工作频率可调
  4. Python异常的处理和检测
  5. 远翔升压FP6291,输出12V内可调,最大功率5W
  6. 闺蜜测试卷软件,2020闺蜜测试卷-抖音2020闺蜜测试卷官方版预约 v1.0-优盘手机站...
  7. 【丁丁历险记】ESP8266配置microPython
  8. 水果店特殊的商业模式,创造客户需求,1个月收款14万!
  9. 联发科今年难乐观,将持续面临压制
  10. 最简洁的麦克纳姆轮原理与控制方法