![从 PGP PRIVATE KEY BLOCK 生成 RSA 私钥](https://linux22.com/image/1476862/%E4%BB%8E%20PGP%20PRIVATE%20KEY%20BLOCK%20%E7%94%9F%E6%88%90%20RSA%20%E7%A7%81%E9%92%A5.png)
我从 keybase.io 下载了我的私钥块(保存在文件 keybase.ppk 中)。它以以下内容开头:
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: Keybase OpenPGP v2.0.49
我现在想创建一个 ssh 密钥对,这样我就可以将公钥放在远程服务器上,并使用私钥登录。如何在 Linux 上执行此操作?
我尝试了在网上找到的各种方法,但我所学到的只是,我对当代密码学的应用和标准的理解非常有限:-/
答案1
经过进一步的谷歌搜索后,我终于明白了这个答案的含义:
https://security.stackexchange.com/a/9635
为了得出这个答案,需要事先做好以下工作:
gpg --import .ssh/keybase.ppk
之后,我做了:
gpg --edit-key D937A057 # removing password
gpg --export D937A057 | openpgp2ssh D937A057 > keybase.pub # generating public key
gpg --export-secret-key D937A057 | openpgp2ssh D937A057 > keybase # generating private key
gpg --delete-secret-key D937A057 # cleanup
有人会认为有更简单的方法可以做到这一点。花了整整 2 个小时才弄清楚……
答案2
GPG 可以以 OpenSSH 格式导出密钥。根据手册页:
--export-ssh-key
This command is used to export a key in the OpenSSH public key format. It requires the specification of one key by
the usual means and exports the latest valid subkey which has an authentication capability to STDOUT or to the file
given with option --output. That output can directly be added to ssh's ‘authorized_key’ file.
By specifying the key to export using a key ID or a fingerprint suffixed with an exclamation mark (!), a specific sub‐
key or the primary key can be exported. This does not even require that the key has the authentication capability
flag set.