Skip to content

Instantly share code, notes, and snippets.

@phrfpeixoto
Created February 16, 2017 16:30
Show Gist options
  • Save phrfpeixoto/8b04a2516ec559eddbfe7520ddde9ad2 to your computer and use it in GitHub Desktop.
Save phrfpeixoto/8b04a2516ec559eddbfe7520ddde9ad2 to your computer and use it in GitHub Desktop.
Using SSH public key to encrypt a file or string
# Recently I had to send a password to someone over Skype. Since that's obviously not a good idea, I asked for
# the person's public SSH RSA key, and used it to encrypt the password itself.
# Convert the public key into PEM format
ssh-keygen -f path/to/id_rsa.pub -e -m pem > ~/id_rsa.pub.pem
# Using the public pem file to encrypt a string
echo "sometext" | openssl rsautl -encrypt -pubin -inkey ~/id_rsa.pub.pem > ~/encrypted.txt
# Or a file
cat ~/some_file.txt | openssl rsautl -encrypt -pubin -inkey ~/id_rsa.pub.pem > ~/encrypted.txt
# To decrypt, you'll need the private key
cat ~/encrypted.txt | openssl rsautl -decrypt -inkey path/to/id_rsa > ~/decrypted.txt
@phrfpeixoto
Copy link
Author

Are you sure you are using RSA keys? How did you generate those?

@alexandredp-apptweak
Copy link

I executed
ssh-keygen -f path/to/id_rsa.pub -e -m pem > ~/id_rsa.pub.pem
with id_rsa.pub having been generated with
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

@vuanhson
Copy link

vuanhson commented Mar 2, 2020

Okay, for anyone facing unable to load public key error:

  • Open your private key by text editor (vi, nano, etc..., vi ~/.ssh/id_rsa) and confirm your key is in OPENSSH key format
  • Convert OpenSSH back to PEM (Command below will OVERWRITE original key). This command will ask you enter old password to decrypt old key and new password to encrypt new PEM key
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

then you can execute OP commands.

If you want to create new key in PEM format, execute below commands:

ssh-keygen -m PEM -t rsa -b 4096 -C "your_email@example.com"

@bechampion
Copy link

bechampion commented Aug 2, 2020

use this to convert your existing key to pem

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

and all works

@tandeday
Copy link

use this to convert your existing key to pem

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

and all works

This worked for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment