一、ssh 公钥格式
ssh 公钥主要有两种格式
PEM 公钥格式
PEM 公钥格式也被称为 SECSH 公钥格式
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by test@test from OpenSSH"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDSOrtrbBkeU4eyeL3uP+2jOYHDmI65krQiwGe8U3
a3l+tw9SlVWl/i9CJvMbEYuHAj7p/T4aaEfiayeuSIFCjaPSSCTsYwuNOU8VEDsGnldzeh
2PObtp2aJiFJmX9CTbeLdjcIAbXNGYVveINqfr0s7PFY+ZNtyQePSQVrQrkKnyzT2ccm1t
E3zDdyNVqRMGRbgD7O+cPOMVcM8C54TXW4QIjWm8us1fNPtm9bCHF6+0Ql8KIoFoCu7ZHr
9g0bpiNSeHGPKaujhanmTxoGYmyHXyFaA5y3o5vPbtiIAytBafVhPuyA9P25ICKREEYEQ+
2rdMzevJrm4LUXJXekwLvr
---- END SSH2 PUBLIC KEY ----
以 BEGIN 行开始,以 END 行结束
ssh 格式
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSOrtrbBkeU4eyeL3uP+2jOYHDmI65krQiwGe8U3a3l+tw9SlVWl/i9CJvMbEYuHAj7p/T4aaEfiayeuSIFCjaPSSCTsYwuNOU8VEDsGnldzeh2PObtp2aJiFJmX9CTbeLdjcIAbXNGYVveINqfr0s7PFY+ZNtyQePSQVrQrkKnyzT2ccm1tE3zDdyNVqRMGRbgD7O+cPOMVcM8C54TXW4QIjWm8us1fNPtm9bCHF6+0Ql8KIoFoCu7ZHr9g0bpiNSeHGPKaujhanmTxoGYmyHXyFaA5y3o5vPbtiIAytBafVhPuyA9P25ICKREEYEQ+2rdMzevJrm4LUXJXekwLvr test@test
一般分为三部分:密钥类型、base64编码后的密钥、注释(可选)。中间用空格分开。
二、生成 key
1. 生成 key
ssh-keygen -t rsa
2. 转换为 PEM 格式
ssh-keygen -e -f id_rsa.pub > pem.pub
-f filename 指定公钥文件
-e 读取 OpenSSH key 文件并将内容打印到标准输出,默认使用 RFC4716 中的格式,也就是 PEM 格式
3. 计算公钥指纹
ssh-keygen -l -f id_rsa.pub
2048 SHA256:eZxOEDBNunlhMjpeQ0VCNyL6AxHtmnrGRkCN01aCY84 test@test (RSA)
4. 从私钥文件生成公钥文件
ssh-keygen -y -f id_rsa
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSOrtrbBkeU4eyeL3uP+2jOYHDmI65krQiwGe8U3a3l+tw9SlVWl/i9CJvMbEYuHAj7p/T4aaEfiayeuSIFCjaPSSCTsYwuNOU8VEDsGnldzeh2PObtp2aJiFJmX9CTbeLdjcIAbXNGYVveINqfr0s7PFY+ZNtyQePSQVrQrkKnyzT2ccm1tE3zDdyNVqRMGRbgD7O+cPOMVcM8C54TXW4QIjWm8us1fNPtm9bCHF6+0Ql8KIoFoCu7ZHr9g0bpiNSeHGPKaujhanmTxoGYmyHXyFaA5y3o5vPbtiIAytBafVhPuyA9P25ICKREEYEQ+2rdMzevJrm4LUXJXekwLvr
-f filename 指定公钥文件
-y 读取 OpenSSH 私钥文件生成公钥并打印到标准输出
参考资料
在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
EFT Server and SSH Key Formats