Ssh Generate Public Key From Private Key
Lets say you have a private/public key pair that you use to login to your server via SSH and you lose the public key, either it was deleted or corrupt and you don’t want to have to regenerate a new pair what options do you have? In this post I will demonstrate how to regenerate a public key from the corresponding private key that you still have.
Generate public key and store into a file
It is a simple one liner command to generate a public key from a private key, so lets say our private key is named ‘user@myserver.key’ and we want to generate the public key and name it ‘authorized_keys’. Below is the command to do this.
Generate and store cryptonci keys. The public key, however, is meant to be saved on the servers you intend to access, in the “/.ssh/authorizedkeys” file (or rather, pasted/added to this file). To open this key, to copy, and then paste, wherever necessary, enter the following in Command Prompt. Generate a new SSH public and private key pair: $ ssh-keygen -t rsa -C 'identifying comment' -f keypair “Identifying comment” can be any string that will assist in determining which key this is. “username@hostname” of the machine where you are connecting from would be a good example. Eg: $ ssh-keygen -t rsa -C 'identifying comment' -f.
Command Breakdown:
- Setting Up Public Key Authentication for SSH. The following simple steps are required to set up public key authentication (for SSH): Key pair is created (typically by the user). This is typically done with ssh-keygen. Private key stays with the user (and only there), while the public key is sent to the server. Typically with the ssh-copy-id.
- Generate online private and public key for ssh, putty, github, bitbucket Save both of keys on your computer (text file, dropbox, evernote etc)!!! The generated keys are RANDOM and CAN'T be restored.
‘ssh-keygen -y’ : tells the prorgram ssh-keygen to output a public key
‘-f user@myserver.key’: references the key file user@myserver.key to generate the public key from
‘> authorized_keys’: instead of printing the output to the console redirect the output (public key) to a file named ‘authorized_keys’
Copy public key to your server
Now we will need to take our authorized_keys file and store it on the server, if we can currently login via SSH to our server we can use rsync over ssh to securely copy the public key to the server, Although this key is displayed to anyone who attempts to login to your server it is smart to use SSH or another secure method to copy it up to the server to ensure that the key is not tampered with while it is being transmitted.
Below is an example using rsync to copy the authorized keys file to its destination on the server and removing it from your local computer.