使用ssh-keygen
,我需要生成一个 SSH 私钥文件,其中使用密码时使用的加密算法是带有 CBC 模式的 AES-128。
我知道这是 OpenSSH >= 5.4 的默认设置,发行说明其中提到:
受密码保护的 SSH 协议 2 私钥现在使用 AES-128 而不是 3DES 进行保护。这适用于新生成的密钥以及重新加密的密钥(例如通过更改其密码)。
但是我的要求是将该加密算法与 OpenSSH 5.3p1 一起使用(我无法更改 OpenSSH 版本)。
如何在不升级到 OpenSSH 5.4 或更新版本的情况下将加密算法更改为 AES-128?
答案1
ssh-keygen
没有指定密码加密的选项,因此您不能简单地ssh-keygen
通过更改配置文件或为其提供选项来使旧版本的行为像新版本一样,但您可以使用OpenSSL生成或转换密钥。
转换
假设你的密钥是 RSA
openssl rsa -aes128 -in <3des_protected> -out <aes128_protected>
将3des_protected
密钥转换为 AES128 密钥。它将要求输入三次密码:第一次用于读取旧密钥,第二次用于设置新密钥。
创建
首先创建私有部分
openssl genrsa -aes128 -out <newkey>
然后更改其权限,以便 ssh 不会抱怨chmod 600 <newkey>
然后通过发出以下代码从私钥派生出公钥:
ssh-keygen -e -f newkey > newkey.pub