たとえばプロジェクトで共有の秘密鍵(というのも微妙だけど)はあって、それを使ってアクセスしたいホストがあるけど公開鍵がない、みたいな場合。
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で秘密鍵から生成した公開鍵の内容が一致。