我的 OpenSSH ED25519 私钥文件具有以下结构:
-----BEGIN OPENSSH PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END OPENSSH PRIVATE KEY-----
当文件采用以下格式时,MySQL Workbench 将不会建立连接,所需格式描述如下这个答案:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END RSA PRIVATE KEY-----
我该如何进行这种转换(最好使用 bash 命令)?我不想再次创建密钥对并将公钥放在 10 个不同的地方。
答案1
不幸的是,这无法实现,因为 ED25519 和 RSA 是完全不同的密钥类型。您无法在它们之间进行转换。
唯一的解决方案是创建一个新的密钥对。要创建适用于 MySQL 的密钥对,请使用:
ssh-keygen -m PEM -t rsa -b 8192
答案2
来自帖子 Openssh 私钥到 RSA 私钥:
您有一个 OpenSSH 格式的密钥,并且想要一个 PEM 格式的密钥。这对我来说并不直观,但建议的转换方法是更改密钥的密码并同时以不同的格式写入。
该命令如下所示:
ssh-keygen -p -N "" -m pem -f /path/to/key
它会就地更改文件,因此请备份当前密钥以防万一。
-N ""
将密码设置为无。我还没有用密码测试过。公钥应该没有问题。
有关上述命令的完整解释,请参见
-m
此处的选项: https://man.openbsd.org/ssh-keygen#m