Problem: Lost private key file ~/.ssh/id_rsa, but could connect to remote hosts via pubkey auth anyway: gpg-agent cached the private key. How to get the private key?
Solution: Use gpg-protect-tool to get the key (you need to know the passphrase of course):
gpgsm --call-protect-tool --p12-export ~/.gnupg/private-keys-v1.d/your-keyfile.key >key.p12
Now you have a PKCS12 file and you can extract the private key like this:
openssl pkcs12 -in key.p12 -out privkey.pem
And there is your extracted private key.
is there an updated method to do this? --p12-export is no longer supported.