ssh秘密鍵を元に公開鍵を復元する

はじめに

秘密鍵は手元にあるけど、公開鍵がすぐに出せないということがよくある。
しかし、秘密鍵を元に公開鍵を作成することは可能だ

手順

ssh-keygen -yf 秘密鍵

リダイレクトすることにより、ファイルに出力が可能

ssh-keygen -yf  /tmp/id_rsa > /tmp/id_rsa.pub.dump

 

確認

オリジナルの公開鍵と、秘密鍵を元に復元した公開鍵の違いはこちら

[root@tsukada ~]# ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /tmp/id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /tmp/id_rsa.
Your public key has been saved in /tmp/id_rsa.pub.
The key fingerprint is:
SHA256:HlWiUEHdOU5YteJv38bSB5oXXUQPuxqaubyvJK8dpzs root@tsukada
The key's randomart image is:
+---[RSA 2048]----+
|      .o+o.+ooo..|
|       . .oo=  +o|
|        . .o..o..|
|         . ... ..|
|        S   o ...|
|       . . + +o .|
|        o * ooo= |
|         *E=o.o.*|
|        ..X*.. o+|
+----[SHA256]-----+
[root@tsukada ~]# 
[root@tsukada ~]# ls -l /tmp/id_rsa*
-rw------- 1 root root 1675  8月 17 19:36 /tmp/id_rsa
-rw-r--r-- 1 root root  393  8月 17 19:36 /tmp/id_rsa.pub
[root@tsukada ~]# 
[root@tsukada ~]# ssh-keygen -yf   /tmp/id_rsa > /tmp/id_rsa.pub.dump
[root@tsukada ~]# ls -l /tmp/id_rsa*
-rw------- 1 root root 1675  8月 17 19:36 /tmp/id_rsa
-rw-r--r-- 1 root root  393  8月 17 19:36 /tmp/id_rsa.pub
-rw-r--r-- 1 root root  381  8月 17 19:36 /tmp/id_rsa.pub.dump
[root@tsukada ~]# diff /tmp/id_rsa.pub /tmp/id_rsa.pub.dump
1c1
< ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhAoTIS70SmsUKkYp+J11UdnbEqmHmJ1rZP9lbXlP7jDqYZbOKV761CIEtgAuObxNDsr7fh2K0/eH4P+Ie1JB4yFsAQdyQnIqR0BEOT+3DKdSVDJP6ec0iOGl5XrAqbx3rs5pCfUBC3tD8EQHpKOrRHxp7m+o3QnljGtAL0cBMb+3n4dw4Lapq3L0ZOaeXzmuH7efOLT/u6wUQVzWACSZ2z4Jssei22nkJXgXXM6pkV7ejkbNZUppKJZe5drYvW4TJPqKYeAktDr6tnhDJ6n1Qgy3SjWGaDcJ7UKa2CG/84y+I9Et2BXiJaUd5qNMBITx26RDMcNoxTbGSOp1IZwPr root@tsukada
---
> ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhAoTIS70SmsUKkYp+J11UdnbEqmHmJ1rZP9lbXlP7jDqYZbOKV761CIEtgAuObxNDsr7fh2K0/eH4P+Ie1JB4yFsAQdyQnIqR0BEOT+3DKdSVDJP6ec0iOGl5XrAqbx3rs5pCfUBC3tD8EQHpKOrRHxp7m+o3QnljGtAL0cBMb+3n4dw4Lapq3L0ZOaeXzmuH7efOLT/u6wUQVzWACSZ2z4Jssei22nkJXgXXM6pkV7ejkbNZUppKJZe5drYvW4TJPqKYeAktDr6tnhDJ6n1Qgy3SjWGaDcJ7UKa2CG/84y+I9Et2BXiJaUd5qNMBITx26RDMcNoxTbGSOp1IZwPr
[root@tsukada ~]# 
[root@tsukada ~]# 

公開鍵の後ろに作成したuser@serverが入るのがオリジナル。入らないのが復元した公開鍵。もちろん機能的にはまったく同じく使うことが可能だ