Ssh Extract Public Key From Private Key



Yyyy/mm/dd tt:tt:tt SSHAUTH Authentication by public key failed: Unable to extract public key from private key. I have tried the following troubleshooting steps: Confirmed working public key authentication with PuTTY on the same machine. Create new profile from scratch. $ ssh-keygen -o Generating public/private rsa key pair. Enter file in which to save the key (/home/schacon/.ssh/idrsa): Created directory '/home/schacon/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/schacon/.ssh/idrsa.

A lost SSH public-key or a web service generates an SSH key but does not provide the public-key part to you. What to do now? There is a solution for this situation.

When you have an SSH key you need the public key to setup SSH passwordless login with SSH-key. But if you have lost the public key part but still have the private key, there is a way to regenerate the key.

With the public key missing, the following command will show you that there is no public key for this SSH key.

The -l option instructs to show the fingerprint in the public key while the -f option specifies the file of the key to list the fingerprint for.

To generate the missing public key again from the private key, the following command will generate the public key of the private key provided with the -f option.

Public

The -y option will read a private SSH key file and prints an SSH public key to stdout. The public key part is redirected to the file with the same name as the private key but with the .pub file extension. If the key has a password set, the password will be required to generate the public key.

To check the details of the generated public key execute the following command as shown above.

The output of this command shows the key size as the first column, the fingerprint as the second column and after the file name, the type is shown in brackets. In the example above, a 4096 bit RSA key.

Read more of my posts on my blog at http://blog.tinned-software.net/.

Related posts:

This tutorial explains the Passwordless SSH using Public Key and Private Key in Linux.

SSH stands for Secure SHELL, is a protocol used to connect remote hosts to login or performing some tasks using scripts.

When we want to automate some tasks on remote hosts using scripts from a centralized server like Jenkins/Ansible or any Linux Server, we may require a password less connection between the remote hosts and the centralized Server.

In this tutorial, we will learn to create Passwordless SSH login using public key and private key. Follow the step by step guide to make your ssh connection passwordless.

This tutorial will work for Linux Destro such as Centos, Ubuntu, Redhat, Amazon Linux(AWS EC2) and Other as well.

Recommended Read:How to Install Jenkins on Ubuntu

Also Read : Git Tutorial for beginners (Part I)

Scenario

We have one Local Machine and one Remote Server.We will setup a passwordless connection to login Remote Server from the local Machine.

Perform following steps on the remote Server

Step 1– Create an User and login or login as an existing user.

$ useradd devops

$ su – devops

Public Ssh Key

Step 2 – Generate a key pair ( Public key and Private Key) using ssh-keygen command.

Before running this command make sure you are on home directory of the user.If not you can go to the home directory by cd ~ command.

$ cd ~

$ ssh-keygen -t rsa

It will ask for some details. Do not put anything here and press ENTER only.

By ls -al command you can see a hidden directory .ssh and two files namely id_rsa and id_rsa.pub inside .ssh directory are created.Here id_rsa is the Private key and id_rsa.pub is the Public Key.

Private key(id_rsa) is kept at source computer(local machine) from where you have to ssh. Public Key(id_rsa) is kept at Destination Server(Remote Server) , the Server you want to access.

Step 3- Create a file name authorized_keys in side .ssh directory and copy the content of id_rsa.pub file to authorized_keys file.

Go to .ssh directory

$ cd ~/.ssh/

Create an empty file name authorized_keys

$ touch authorized_keys

Copy the content of id_rsa.pub to authorized_keys

$ cat id_rsa.pub > authorized_keys

Check the authorized_keys file if contents are copied.

$cat authorized_keys

Step 4 – Change the permission of authorized_keys

$ chmod 600 authorized_keys

Step 5– Copy the content of id_rsa file

Use cat command to display the content of id_rsa and copy its content.

$ cat id_rsa

Ssh Using Private Key

On the local Machine

Step 1– Create a file and paste the content of id_rsa copied from remote server inside this file. You can use nano command to perform this action.

Create a file name devops.key using nano command , paste the content and pres Ctrl+X to save and close the file.

$ nano devopys.key

Private

Step 2 – SSH remote Server from local machine without using password.

Get Ssh Public Key

$ sudo ssh -i path-to-private-key [email protected]

$ sudo ssh -i devops.key [email protected]

I hope you enjoyed this tutorial and learned Passwordless SSH login using public key and private key. If you think this is really helpful, please do share this to other as well. Please also share your valuable feedback, comment or any query in the comment box.I will really happy to resolve your all queries.

Ssh Public And Private Keys

Thank You

If you think we helped you or just want to support us, please consider these:-

Connect to us: Facebook | Twitter