mac使用ssh-keygen生成私钥

mac上可以使用ssh-keygen命令生成私钥,用于连接远程服务器。命令如下:

1
ssh-keygen -t rsa -C "[email protected]" -b 4096

-t 指定秘钥类型
-C 添加注释
-b 指定秘钥长度

生成的私钥内容大概如下:

1
2
3
4
5
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBYUHBDJEAu/4vxpg8pp3omiRZgEL726n7UHDJUWNJECNopQrCjmk
....
X60pTqn4Ct59ZYDUEH532K+bHFRztPDBXJPnijw0hu3of+9yy+w==
-----END RSA PRIVATE KEY-----

不清楚从哪个版本开始,mac 上生成的格式变成了如下格式:

1
2
3
4
5
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
....
KOW7H7TbQrLnAAAAEXRpYW55bEB4MXkyejMuY29tAQ==
-----END OPENSSH PRIVATE KEY-----

开始结束标记中由 RSA 变成了 OPENSSH,导致部分软件如 DataGrip 之类通过 ssh 连接远程服务器识别秘钥失败,有两种方法可以解决:

方法一:

生成命令添加 -m PEM 指定格式为 PEM 格式

1
ssh-keygen -m PEM -t rsa -C "[email protected]" -b 4096

这样生成的私钥就是旧的格式,对于已有的私钥可以考虑方法二转换格式。

方法二:

安装 PuTTYgen,转换私钥格式。

安装方式参考官网:https://www.puttygen.com

1
puttygen id_rsa -O private-openssh -o id_rsa.old

id_sa 私钥文件
-O 大写英文字母O,指定输出格式
-o 小写英文字母O,指定输出的文件

通过 puttygen --help 查看更多其他参数