30

Running "ssh-keygen -t dsa" generates two files, a private and public key. Its simple enough to comprehend that the private key is used to identify yourself to the outside world, which only sees your public key.

However, I've also seen ".pem" files used as well, and I use them myself. Whats the relationship between the .pem file and pub files. I was hoping for a simple answer, but other questions (https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file) seem to indicate that there is no simple explanation for why a pem file might be better/worse in different scenarios to a pub file.

jayunit100
  • 611
  • 4
  • 8
  • 18

2 Answers2

17

.pub file format is used by SSH for public key store, this key need to share with a Server.

.pem(Privacy Enhanced Mail) is a base64 container format for encoding keys and certificates. .pem download from AWS when you created your key-pair. This is only a one time download and you cannot download it again.

.ppk(Putty Private Key) is a windows ssh client, it does not support .pem format. Hence you have to convert it to .ppk format using PuTTyGen.

non suffixed ssh file is a private key


Convert PEM to PPK file format

puttygen server.pem -O private -o server.ppk

Create a PEM from a PPK file

puttygen server.ppk -O private-openssh -o server.pem  
Premraj
  • 2,116
  • 2
  • 18
  • 25
  • https://www.chiark.greenend.org.uk/~sgtatham/putty/ says Putty is for both Windows and Unix Platforms. – NealWalters May 11 '20 at 14:45
  • 1
    Was the Question somehow specific to AWS or PPK? I'm trying to understand the relevancy here. – cellepo Jul 08 '20 at 01:34
  • This answer could tell us how to create a .pub file. My server (cPanel) gives me a certificate and a private key, so I'd like to know how to create all the other formats from those two. – David Spector Feb 01 '21 at 16:46
3

In SSH connections, keys are exchanged.

key1 is the private key and key.pub is the public key.

Read more at: Public-key cryptography

The .pem files are certificates (in base64), exchanged in HTTPS protocol (TLS/SSL). Read more at: X.509

Ryan Casas
  • 103
  • 4
Angel
  • 118
  • 3