[Linux] 秘密鍵から公開鍵を作成する

  • このエントリーをはてなブックマークに追加
  • LINEで送る
この記事は 2020年3月27日 に書かれたものです

例えばSSHでログインするために秘密鍵だけ渡された場合、公開鍵は自分で作成することができます。

$ ssh-keygen -f -y ~/.ssh/id_foo > ~/.ssh/id_foo.pub
- Sponsored Link -

準備

秘密鍵を保存

まずはもらってきた秘密鍵を所定の場所に保存します。通常macOSやLinuxでは基本的にホームディレクトリ直下の.sshディレクトリへ設置します。

$ vi ~/.ssh/id_foo
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
(中略)
IDBAUGBw==
-----END OPENSSH PRIVATE KEY-----

秘密鍵のパーミションを設定

秘密鍵のパーミションを600に合わせます。これを忘れるとこのあとつまずきますので必ず行います。

$ chmod 0600 ~/.ssh/id_foo

公開鍵を生成

ssh-keygenコマンドで生成します。一般的に公開鍵の拡張子は.pubとすることが多いですね。

$ ssh-keygen -y -f ~/.ssh/id_foo > ~/.ssh/id_foo.pub

オプションの内容は以下の通り。

-y
OpenSSH形式の秘密鍵を読み込み、OpenSSH形式の公開鍵を標準出力に出力します。
-f
秘密鍵のファイルを指定します。指定しない場合は~/.ssh/id_rsaが利用されます。

エラー

パーミッションがゆるすぎる

パーミッションが600よりもゆるい場合、エラーとなり出力されません。

$ ssh-keygen -f -y ~/.ssh/id_foo > ~/.ssh/id_foo.pub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/katsube/.ssh/id_foo' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/katsube/.ssh/id_foo": bad permissions

パーミッションを600にすると今度はエラーとならず正常に出力されました。

$ chmod 0600 ~/.ssh/id_foo
$ ssh-keygen -y -f ~/.ssh/id_foo > ~/.ssh/id_foo.pub

参考

  • man ssh-keygen

コメント

コメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -