如何使用ssh-keygen的-i选项?从.p12证书转OpenSSH公钥遇问题
从PKCS#12(.p12)证书获取OpenSSH公钥及ssh-keygen -i用法解析
ssh-keygen -i支持的可互换格式
ssh-keygen -i(导入/转换格式)仅支持以下几种密钥格式,不直接兼容PKCS#12(.p12):
- RFC 4716标准SSH公钥格式:文件开头为
---- BEGIN SSH2 PUBLIC KEY ---- - OpenSSL PEM格式:包括RSA/ECC/DSA的公钥(开头
---- BEGIN PUBLIC KEY ----)和私钥(如---- BEGIN RSA PRIVATE KEY ----) - SECSH公钥格式:旧版SSH2公钥格式,与RFC 4716格式相近
- PKCS#8通用私钥格式:开头为
---- BEGIN PRIVATE KEY ----
从.p12获取OpenSSH公钥的步骤
由于.p12是封装了证书和密钥的PKCS#12容器,需要先通过openssl提取PEM格式的密钥,再用ssh-keygen -i转换:
步骤1:从.p12提取PEM格式私钥
openssl pkcs12 -in your-cert.p12 -nocerts -out private-key.pem -nodes
参数说明:
-nocerts:仅提取私钥,忽略证书部分-nodes:生成不加密的私钥(如需加密可移除该参数,输入密码保护)
步骤2:将PEM私钥转换为OpenSSH公钥
ssh-keygen -i -f private-key.pem > id_rsa.pub
可选:直接提取PEM公钥再转换
如果只需要公钥,可先提取PEM格式公钥:
openssl pkcs12 -in your-cert.p12 -clcerts -nokeys -out public-key.pem
再转换为OpenSSH格式:
ssh-keygen -i -f public-key.pem > id_rsa.pub
ssh-keygen -i的使用示例
示例1:RFC4716格式转OpenSSH公钥
ssh-keygen -i -f rfc4716-key.pub > openssh-key.pub
示例2:PEM格式RSA私钥转OpenSSH公钥
ssh-keygen -i -f rsa-private.pem > id_rsa.pub
示例3:PKCS#8格式私钥转OpenSSH公钥
ssh-keygen -i -f pkcs8-private.key > id_rsa.pub
内容的提问来源于stack exchange,提问作者Shubham Singh
相关产品推荐
相关产品推荐

