RSA密钥只能用于加密其密钥长度的一部分数据,例如2048位RSA密钥只能用于加密约245个字节的数据。
参见:
https://security.stackexchange.com/questions/33434/rsa-maximum-bytes-to-encrypt-comparison-to-aes-in-terms-of-security
因此,为了加密/解密大量数据(文件),应使用对称密钥,该对称密钥使用公钥加密,而不是使用公钥本身。
此外,您不会将对称密钥添加到公共 SSH密钥中,因为对称密钥是秘密的,而公共SSH密钥不是秘密。对称密钥应添加到私有 SSH密钥中。
操作如下:
要转换文件格式,请安装monkeysphere工具集(Ubuntu)。
sudo apt-get install monkeysphere
使用pem2openpgp工具将私钥转换为gpg格式。使用管道符号“|”将其导入到gpg中进行导入。
pem2openpgp userid-ssh@example.com < id_rsa | gpg --import
gpg --list-secret-keys
编辑您对该密钥的信任级别。
gpg --edit-key userid-ssh@example.com
gpg> trust
添加所需的信任级别(例如ultimate)
导入的密钥仅适用于创建证书,不能用于签名或加密。
加密
该密钥是RSA密钥,不能用于加密/解密大量数据。如果您想要这样做,您必须添加对称加密子密钥。当您进行加密时,GPG将使用此子密钥而不是原始SSH密钥。
gpg> addkey
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
Your selection? 6
现在,您可以使用基于SSH密钥的身份验证来加密和解密。
gpg -vv -r userid-ssh@example.com -e -a unencrypted_file.txt
这有多有用呢?好吧,使用GPG作为SSH密钥的认证子密钥生成和管理工具比尝试使用反向方法更加合理。实际上,它可以集成到SSH中,而无需使用ssh-agent。