You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:31:16