我有几个用户使用智能CVS在 OSX 上与我们的 CVS 存储库进行交互。我们使用 cvs :ext:
(SSH2) 方法访问存储库,该存储库存储在远程 Linux 系统上。我们使用 ssh 密钥身份验证,并要求用户使用密码加密其私钥。
OSX 附带的 ssh-keygen 版本AES-128-CBC
用于加密私钥,显然 SmartCVS 使用的任何 ssh 库都不支持解密此密码,因为它会引发错误。如果我使用 PuTTYgen 在 Windows 上生成密钥并将该密钥移至 OSX,一切正常。PuTTYgen(以及 Linux 上大多数版本的 ssh-keygen)使用该DES-EDE3-CBC
密码,SmartCVS 能够毫无问题地解密。
因此,我的问题是:有没有办法告诉 ssh-keygen 在加密私钥时使用哪种密码?ssh-keygen(1)
OSX 上的手册页没有提到能够设置密码类型,但我希望在生成后可能还有其他方法可以转换为另一种密码类型。
答案1
我不确定如何让 ssh-keygen 使用特定的加密算法创建密钥。
您可以直接使用 OpenSSL 生成密钥。
# create 1024 bit rsa and encrypt with des3
# make sure you set your umask or chmod this so that it is 0600,
# or else ssh will refuse to use it.
openssl genrsa -des3 -out .ssh/id_rsa 1024
# export an ssh public key
ssh-keygen -y -f .ssh/id_rsa > .ssh/id_rsa.pub
您还可以使用 OpenSSL 转换现有密钥的密码。
openssl rsa -in id_rsa -out newkey_id_rsa -des3
看:genrsa(1),rsa(1), 和ssh-keygen(1)以获取各种选项的列表。