使用 PuTTYgen 生成的 ssh密钥(.ppk),和直接在 git bash 里生成的ssh密钥(OpenSSH 格式),是两种不同的格式,有时需要相互转换。本文侧重于记录,在 windows 系统里,导入 PuTTYgen 保存的私钥,生成 OpenSSH 格式的公钥和私钥对。
OpenSSH格式和PuTTY格式的密钥
- OpenSSH 格式:公钥默认名字为
id_rsa.pub
,私钥默认名字为id_rsa
,可以由 git bash 生成 - PuTTY 格式:.ppk 文件是 Putty 的私钥,文件中同时包括了公钥和私钥,可以由
PuTTYgen
生成并保存
所以,可以直接将 .ppk 文件,转换为 OpenSSH 格式的一个私钥和一个公钥
PuTTY 格式转换为 OpenSSH 格式(Win)
转换通过PuTTYgen
完成,也可以用来实现 OpenSSH 格式转换为 PuTTY 格式
导入 .ppk 文件
打开 PuTTY 自带的密钥生成工具 PuTTYgen
,在最上面的菜单栏选择 Conversions -> Import Key
,载入已有的 .ppk 文件(也就是之前通过 PuTTYgen 保存的私钥)
保存 OpenSSH 格式私钥
在最上面的菜单栏选择 Conversions -> Export OpenSSH key
,保存 OpenSSH 格式的私钥
保存 OpenSSH 格式公钥
在下方的图形界面中,点击 Save public key
,取名加上 .pub 后缀
,保存公钥
其它部分
linux 系统下的相互转化
需要安装 putty-tools
sudo apt-get install putty-tools
相互转换
## (1)puttykey.ppk 转换为 OpenSSH 格式的私钥和公钥
# 获取私钥 id_rsa
puttygen /path/to/puttykey.ppk -O private-openssh -o ~/.ssh/id_rsa
# 获取公钥 id_rsa.pub
puttygen /path/to/puttykey.ppk -O public-openssh -o ~/.ssh/id_rsa.pub
## (2)OpenSSH 格式的私钥 id_rsa 转换为 puttykey.ppk
puttygen id_rsa -o puttykey.ppk