OpenSSH だと公開鍵がなくなっても秘密鍵から復元できることを知った。 今回はそれを試してみる。
使った環境は次の通り。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS" $ uname -r 4.15.0-65-generic $ ssh -V OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
もくじ
公開鍵ペアを作る
ひとまず以下のようにして公開鍵のペアを作る。
$ ssh-keygen \ -t rsa \ -b 2048 \ -P '' \ -f $HOME/.ssh/id_rsa.example \ -C example@example.jp Generating public/private rsa key pair. Your identification has been saved in /home/vagrant/.ssh/id_rsa.example. Your public key has been saved in /home/vagrant/.ssh/id_rsa.example.pub. The key fingerprint is: SHA256:qrL+HHbnpNI57R+hgQM+eem2BCnAln1b632Kp1/BSw4 example@example.jp The key's randomart image is: +---[RSA 2048]----+ | | |. o | |.+ ... . | |.. ..+oo. . | | . *.=.SE.+ | | . =.o.o+.o | | o.*++..= | | .o.*+*o.+. | | .o++.o=*+. | +----[SHA256]-----+
これで、以下のように公開鍵のペアができた。
$ ls ~/.ssh | grep id_rsa
id_rsa.example
id_rsa.example.pub
公開鍵の中身は以下の通り。
$ cat ~/.ssh/id_rsa.example.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPYjc9UeA6iZM6LhPy5BfXxby0TWyDMbItVk4reJfNEWgpng0tqZaKm2Kp4XizZupfDVMFf2MmCfS3lARO4lDXkmi6YoOoFCSmq4vjuIiykQchjrbRBoTAvNk8IX8Z9lWt7juhbeWL9LGM7tyo7aM+jrB1MteBr8rXB/ugnwmEe3rgLgq64N7zklhLwZKlN8gofH4UGO1MMTq9lPjzFr+Edq/1vIPOiQPtXjjsPCVHryaK+Kyy39qW2I7AeYMCCX5w/JxFAFC/kBLOgWIDOFoHaCxrsl5bXv1augUsHyy6yftc+H7f+Z/xJzWj0l/LRU6iqGMTcOgXtZG8w9vFrObD example@example.jp
ひとまず、作った公開鍵は移動しておく。
$ mv ~/.ssh/id_rsa.example.pub{,.orig}
秘密鍵から公開鍵を復元する
次のように ssh-keygen(1) は -y
オプションを使うことで秘密鍵から公開鍵を復元できる。
秘密鍵のファイルは -f
オプションで渡す。
$ ssh-keygen -y -f ~/.ssh/id_rsa.example > ~/.ssh/id_rsa.example.pub
内容を確認すると、コメントを除いて中身が復元できていることがわかる。
$ cat ~/.ssh/id_rsa.example.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPYjc9UeA6iZM6LhPy5BfXxby0TWyDMbItVk4reJfNEWgpng0tqZaKm2Kp4XizZupfDVMFf2MmCfS3lARO4lDXkmi6YoOoFCSmq4vjuIiykQchjrbRBoTAvNk8IX8Z9lWt7juhbeWL9LGM7tyo7aM+jrB1MteBr8rXB/ugnwmEe3rgLgq64N7zklhLwZKlN8gofH4UGO1MMTq9lPjzFr+Edq/1vIPOiQPtXjjsPCVHryaK+Kyy39qW2I7AeYMCCX5w/JxFAFC/kBLOgWIDOFoHaCxrsl5bXv1augUsHyy6yftc+H7f+Z/xJzWj0l/LRU6iqGMTcOgXtZG8w9vFrObD
ただ、残念ながらコメントまでは復元できない。
例えば、以下のように -C
オプションをつけてもファイルには反映されなかった。
$ ssh-keygen -y -C example@example.jp -f ~/.ssh/id_rsa.example > ~/.ssh/id_rsa.example.pub
いじょう。