如何使用 OpenSSH 5.3 更改私钥文件的加密算法

Tun*_*aki 4 linux security encryption ssh openssh

使用ssh-keygen,我需要生成一个 SSH 私钥文件,其中使用密码短语时使用的加密算法是具有 CBC 模式的 AES-128。

我知道根据他们提到的发行说明,这是 OpenSSH >= 5.4 的默认设置:

密码保护的 SSH 协议 2 私钥现在使用 AES-128 而不是 3DES 进行保护。这适用于新生成的密钥以及重新加密的密钥(例如,通过更改其密码)。

但是,我的要求是在 OpenSSH 5.3p1 中使用此加密算法(我无法更改 OpenSSH 版本)。

如何在不升级到 OpenSSH 5.4 或更高版本的情况下将加密算法更改为 AES-128?

Dav*_*sta 8

ssh-keygen没有用于指定密码短语加密的选项,因此您不能通过ssh-keygen更改配置文件或为其提供选项来简单地使旧版本的行为与新版本一样,但您可以使用OpenSSL生成或转换密钥。

转换

假设您的密钥是 RSA

openssl rsa -aes128 -in <3des_protected> -out <aes128_protected>
Run Code Online (Sandbox Code Playgroud)

将转换成3des_protectedAES128 的密钥。它将要求输入密码三次:一次用于读取旧密钥,两次用于设置新密钥。

创建

首先创建私有部分

openssl genrsa -aes128 -out <newkey>
Run Code Online (Sandbox Code Playgroud)

然后更改其权限,以便 ssh 不会抱怨 chmod 600 <newkey>

然后通过发布公钥从私钥派生

ssh-keygen -e -f newkey > newkey.pub
Run Code Online (Sandbox Code Playgroud)