[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
2048 65537 22910674242901951372109700514222305911005404382729826828303733202727246271129151780809328111314142444937643708197065336344061806573173759249496873454280552699704169728818376102327988617178797568649601671735522868137145364100426211002912160142668644115040507860106304962512271803001264027359406587863651664228014572232130610186228786600276455187805301282374669236217832825274065088078401281168028793885110785700945596016775112537678694431532570328169049252968039090407234623028954479983169424889698023716686474015246450335458030057416596685148084608420001646747215709382718194528577791195697244767428069870538621149641 [email protected]

  SSH 1 公钥格式为所有字段以单个空格符分隔,各字段依次为选项、位数、指数、系数、注释。第一个字段是可选的,表示该条目(行)是否以数字开头,选项字段不会以数字开头。最后一个字段注释,如果在生成密钥时没有给定注释,默认注释为密钥的创建者(一般就是 [email protected] 这种格式),注释仅仅是提供给用户查看密钥时作为一个辨识标记,在 SSH 使用中没有任何作用。

SSH 2 公钥格式

$ cat id-rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmg/9Hoc98c6AIlEPYK6VqE3ZTlMlfXqn2VgU0NAPXeRmYX+jHYZXA5AxMNTD8KgZIuilK23qzzKBy0hgoO9DDpsBg98Pf4NLkHjTcjpPFX1TBD6RWO/OX/g4uN+gZH1/zoREJa4fit8SSG2V2GoQkqrhfRYCy+a9mQX29ZvOLfYK/aMVjb+yfzLJychdvV3CQkDvkd5R/DHNU6ZQ3pyIEjA/cUQqqmgxQj0f72y8IXv8zesXtjXaaKG17R2oSN1MNDZo/y4m426MYxl4mMQMvM5yR3UvhD93pgNgaR8LY/vspcIeE6cJZsGl21oYtrDZ/GdmF5ulMGwjIDfTJRLvb [email protected]

  

  SSH 2 公钥格式为所有字段以单个空格符分隔,各字段依次为选项、密钥类型(keytype)、base64编码后的密钥、注释。第一个字段是可选的,表示该条目(行)是否以数字开头,选项字段不会以数字开头。最后一个字段注释,如果在生成密钥时没有给定注释,默认注释为密钥的创建者(一般就是 [email protected] 这种格式),注释仅仅是提供给用户查看密钥时作为一个辨识标记,在 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: [email protected]。详情参见 RFC4716

附:

1. RFC4716

2. OpenBSD SSHD Manual

时间: 2024-10-05 20:52:13

[Linux] ssh-key 公钥文件格式的相关文章

linux ssh key免密码分发

具体需求: 在同一用户hequan下 实现 A 从本地分发数据到B.过程中不需要密码提示 创建用户 #useradd hequan    # id hequan #echo 123456 | passwd  --stdin hequan # su - hequan RSA 既可以加密也,也可以数字签名 DSA     只能用于数字签名 开始创建密钥 [[email protected] ~]$ ssh-keygen -t dsa              默认RSA Generating pub

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

Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git config --global user.name "xx" git config --global user.email "[email protected]" 生成SSH密钥过程: 1.查看是否已经有了ssh密钥:cd ~/.ssh 如果没有密钥则使用下面命令生成 2.生存密

linux ssh key的转换

我们在使用linux主机的时候一般生产key有两种形式,一种是在linux主机上面生成,然后将私钥分发出去,还有一种是用ssh工具生成然后将公钥上传至服务器.下面三种情况需要key的转换. 原创博文来自:www.51niux.com  博主:忙碌的柴少 1.第一种,用putty生成了.ppk格式的私钥,但是我们是CRT或者X-shell等ssh工具,现在就需要进行私钥的转换了.比如说我现在putty生成的的私钥名称为test.ppk,那么如何转换成id_rsa格式呢,操作如下: 首先第一步下载安

linux ssh key 登录

vim /etc/ssh/sshd_config #禁用root账户登录,非必要,但为了安全性,请配置 PermitRootLogin no # 是否让 sshd 去检查用户家目录或相关档案的权限数据, # 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致. # 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入 StrictModes no # 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2. # 至于自制的公钥数据就放置于用户家

Linux ssh key 失效

处理/etc/ssh/ssh_host_rsa_key 失效问题处理/etc/ssh/ssh_host_rsa_key 失效问题@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        WARNING: UNPROTECTED PRIVATE KEY FILE!          @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Permission

ssh配置公钥私钥(key)登录SecureCRT

在用windows时管理linux服务器时,常会用到SecureCRT.Xshell以及开源的putty.在我工作环境大多都是采用密码认证的方式进行登录.今天对学习了些SecureCRT的密钥登录方式.对比密码认证方式,使用密钥认证登录会有以下几个优点: 1.公钥认证允许使用空密码,省去每次登录都需要输入密码的麻烦2.多用户管理服务器时,可以通过多个公钥登录同一用户下,可以避免因为密码认证被用户都需要密码,导致的密码容易泄密的危险.并且使用passwd修改密码,也不会影响到其他用户的登录.3.做

Linux使用私钥公钥(Public key)登录 - 免密码登录

为了更安全.方便的登录Linux服务器,可以取消密码登录,使用私钥公钥的方式来登录,更方便也更安全. 生成密钥 借助Xshell可以很方便的生成和管理私钥,点击工具菜单,选择新建用户密钥生成向导: 直接点击下一步 输入名称和密码,再点击下一步 将公钥保存起来备用,公钥需要上传到Linux服务器上. 上传公钥 先使用用户名和密码登录,然后输入命令 cd .ssh 将公钥保存到 .ssh 目录 上传成功如下图所示: 导入公钥 公钥上传好以后,需要导入公钥 cat RemotePPK.pub >>

Linux 系统安全配置 Debian => 禁止root SSH登陆+配置SSH Key+配置iptables

Linux 系统安全配置 Debian => 禁止root SSH登陆+配置SSH Key+配置iptables 当我们安装完Linux系统作为服务器后,总有一系列的安全配置需要进行.特别是当你的服务器Ip是对外网开放的话.全世界有很多不怀好意的人,不断试图穷举你的root密码,尝试登陆.那么为Linux服务器增加一些安全措施,是很有必要的.本文基于Debian 9.5. 本文读者需要有一定的linux基础,有一定的网络与英语基础.知道如何使用nano/vim编辑器.不过总体而言,本文是为初级用

Linux配置SSH Key到GitHub

Linux配置SSH Key到GitHub 准备工作 首先检查下本机是否已经安装了SSH,在终端输入ssh即可: 如果没有安装进行yum安装 # yum -y install openssh-clients 生成ssh key 输入ssh-keygen -t rsa,然后连续按回车键三次(注意:千万不要输入密码!). id_rsa.pub为公钥,id_rsa为私钥,它们都是隐藏文件. 那么如何查看它们的内容呢?只需要继续执行以下两条命令即可. # cd .ssh/ # cat id_rsa.pu