zaki work log

作業ログやら生活ログやらなんやら

SSHの秘密鍵から公開鍵を生成する (小ネタ)

たとえばプロジェクトで共有の秘密鍵(というのも微妙だけど)はあって、それを使ってアクセスしたいホストがあるけど公開鍵がない、みたいな場合。
ssh-keygen -yコマンドを使って、秘密鍵から公開鍵を生成できる。

実行するコマンドは以下

ssh-keygen -y -f <秘密鍵のパス>

-f <秘密鍵のパス>の指定が無ければ、対話的に聞いてくる。

zaki@cloud-dev2:~$ ssh-keygen -y
Enter file in which the key is (/home/zaki/.ssh/id_ed25519): 

生成される公開鍵は、標準的に生成したものと同様のものが作成される。

### キーペアをtmp/id_rsa_tmpに作成
zaki@cloud-dev2:~$ ssh-keygen -t rsa -f tmp/id_rsa_tmp -N ""
Generating public/private rsa key pair.
Your identification has been saved in tmp/id_rsa_tmp
Your public key has been saved in tmp/id_rsa_tmp.pub
The key fingerprint is:
SHA256:ts+I6/AL9y4/RaNUNF+waR5YCcZJgQ6+w9M774HNdsI zaki@cloud-dev2
The key's randomart image is:
+---[RSA 3072]----+
|         =B+oo.  |
|      . ..+=.+   |
|     . o .. *    |
|      . o oo .   |
|     . +So ..    |
|      =.o*.      |
|    o .oooE .    |
|     =.o+= +     |
|     .**===      |
+----[SHA256]-----+

### 生成したキーペアの確認
zaki@cloud-dev2:~$ ls tmp/id_rsa_tmp*
tmp/id_rsa_tmp  tmp/id_rsa_tmp.pub
zaki@cloud-dev2:~$ md5sum tmp/id_rsa_tmp*
a9d7dc990332d70a6d1e3f6c517c180d  tmp/id_rsa_tmp
b17f741cc6c5e54915823b9957345317  tmp/id_rsa_tmp.pub

### ssh-keygen -f で生成したキーのハッシュ値
zaki@cloud-dev2:~$ ssh-keygen -y -f tmp/id_rsa_tmp | md5sum 
b17f741cc6c5e54915823b9957345317  -

この通り、ssh-keygenで生成したキーペアの公開鍵と、ssh-keygen -f秘密鍵から生成した公開鍵の内容が一致。


参考:man ssh-keygen(1)