Edited at

2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方

何番煎じかわからないが、 ssh-keygen 最近他の種類も生成すること多くなってきたので。

まあ、 Advent Calendar ネタということで。

よーし埋めるぞ。


RSA 1024bit 以下

絶対に使ってはいけません。

古い puttygen.exe とかだと 1024 ビット以下の鍵が生成されることがあるので注意が必要です。


無難に RSA 2048bit

よく使われますが、最近は計算機性能も向上したためか、このビット長の暗号は推奨されないようです。


とはいえNISTによると、2031年以降、RSA 2,048bitをはじめ強度の低いアルゴリズムはほとんどが使用禁止扱いになる。

ECDSAがスタンダードになるのは時間の問題。



  1. ECDSA鍵をGitHubで使う - Qiita

ssh-keygen -t rsa -b 2048


常識 RSA 4096bit

ssh-keygen -t rsa -b 4096


新まあまあ意識高い ECDSA 256bit

楕円曲線暗号だよ〜。

ssh-keygen -t ecdsa -b 256


まあまあ意識高い ECDSA 384bit

YubiKey 4 で使えるのがこのビット長。

最近 YubiKey すこし真面目に使い始めたのでこれ以上のものを使っていこうなって自分に言い聞かせています。

ECDSA ログインもできないゴミサーバーが未だに存在するのは事実なので、 RSA 4096 ビットキーとかは踏み台サーバーに置いたりしてハイブリッドな使い方を使い方をすることが多い。プライベートではもっぱら ECDSA 以上以外使わない。

ssh-keygen -t ecdsa -b 384


意識高い ECDSA 521bit

外でも指摘されているが 512bit の typo ではない。

ssh-keygen -t ecdsa -b 521 -C "wnoguchi-mbp"


圧倒的に意識高い Ed25519

ビット長は 256bit 固定長とのこと。

ssh-keygen -t ed25519 -P "" -f serial-server.pem


example

ssh-keygen -t ed25519 -P "" -f serial-server.pem


ssh-keygen tips

man みりゃわかることですが


コメントつける

-C "my machine"

公開鍵の後ろにこれがくっつくが、認証に特に影響はないが、Ops サイドとしては誰の鍵か識別するの大変だからこれつけといてくれという気持ち。

というか自分でもわからなくなるから気をつけな?


鍵ペアのファイル名を指定する

-f awesome-key

この例なら awesome-key, awesome-key.pub ができる。


パスフレーズを指定

-P "blahblahblah"

-P "" にするとパスフレーズなしになる。


鍵生成落ち穂拾い


パスフレーズ削除したい

$ ssh-keygen -p -f ~/.ssh/id_ecdsa

Enter old passphrase: <- 現在のパスフレーズを入力
Enter new passphrase (empty for no passphrase): <- 空エンター
Enter same passphrase again: <- 空エンター
Your identification has been saved with the new passphrase.


公開鍵無くした

ssh-keygen -yf id_ecdsa

で生成できるよ。


秘密鍵無くした

生成し直してください。

というか公開鍵から秘密鍵が生成できたら逆に問題。


References


  1. CentOSでのSSH秘密鍵・公開鍵作成方法 | server-memo.net

  2. SSHの鍵認証をRSAからECDSAに変更した - 以下省略!

  3. お前らのSSH Keysの作り方は間違っている - Qiita

  4. GitHubユーザーのSSH鍵6万個を調べてみた - hnwの日記

  5. GitHubでEd25519鍵をつかう - ひと目で尋常じゃないもふもふだと(ry

  6. SSH鍵の暗号化方式を強化してみた。 | しま★りん.blog @ayurina

  7. 楕円曲線暗号に 512 bit は存在しない

  8. ECDSA鍵をGitHubで使う - Qiita