OpenSSH 格式的密钥转换为 PEM 格式

Published on Jun 29, 2022

MySQL 客户端软件一直使用的 DBeaver, 使用 SSH 隧道连接数据库的时候报错 Specified private key cannot be converted.

出现这个错误是由于 SSH 私钥的格式造成的。 默认情况下 ssh-keygen 创建的密钥使用的是 OpenSSH 格式。 密钥的文件头是:

-----BEGIN OPENSSH PRIVATE KEY-----

DBeaver 使用的是旧的 PEM 格式的密钥,密钥的文件头应该是:

-----BEGIN RSA PRIVATE KEY-----

解决方案的话也比较简单,可以重新生成一个 PEM 格式的密钥,也可以将原有的 OpenSSH 格式密钥装换为 PEM 格式。

重新生成 PEM 格式的密钥:

ssh-keygen -t rsa -b 2048 -m PEM

将现有密钥转换为 PEM 格式:

# 注意备份原有的密钥, 执行 ssh-keygen -p 时会直接覆盖原密钥文件
cp id_rsa id_rsa.bak
ssh-keygen -p -m PEM -f id_rsa

参考