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

何番煎じかわからないが、 `ssh-keygen` 最近他の種類も生成すること多くなってきたので。
まあ、 Advent Calendar ネタということで。
よーし埋めるぞ。

RSA 1024bit 以下
----------------------------------

**絶対に使ってはいけません。**
古い `puttygen.exe` とかだと 1024 ビット以下の鍵が生成されることがあるので注意が必要です。

無難に RSA 2048bit
-------------------------------------

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

>とはいえNISTによると、2031年以降、RSA 2,048bitをはじめ強度の低いアルゴリズムはほとんどが使用禁止扱いになる。
>ECDSAがスタンダードになるのは時間の問題。

1. [ECDSA鍵をGitHubで使う - Qiita](https://qiita.com/darai0512/items/c7b47d1b3fe06c4dea7d)

```sh
ssh-keygen -t rsa -b 2048
```

常識 RSA 4096bit
-----------------------------------------

```sh
ssh-keygen -t rsa -b 4096
```

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

楕円曲線暗号だよ〜。

```sh
ssh-keygen -t ecdsa -b 256
```

まあまあ意識高い ECDSA 384bit
-------------------------------------------

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

- [秘密鍵、管理してますか? YubiKeyで鍵の一元管理とSSH接続、２段階認証の高速化を試す - Qiita](https://qiita.com/dseg/items/77d77467970b1b510285)

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

```sh
ssh-keygen -t ecdsa -b 384
```

意識高い ECDSA 521bit
-------------------------------------

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

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

圧倒的に意識高い Ed25519
---------------------------------------------

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

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

example
--------------------

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

ssh-keygen tips
----------------------------

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

### コメントつける

```sh
-C "my machine"
```

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

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

```sh
-f awesome-key
```

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

### パスフレーズを指定

```sh
-P "blahblahblah"
```

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

鍵生成落ち穂拾い
----------------------------------

### パスフレーズ削除したい

```shell-session
$ 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.
```

### 公開鍵無くした

```sh
ssh-keygen -yf id_ecdsa
```

で生成できるよ。

### 秘密鍵無くした

生成し直してください。
というか公開鍵から秘密鍵が生成できたら逆に問題。

References
--------------------------

1. [CentOSでのSSH秘密鍵・公開鍵作成方法 | server-memo.net](http://www.server-memo.net/server-setting/ssh/centos-createkey.html)
1. [SSHの鍵認証をRSAからECDSAに変更した - 以下省略!](http://abyssluke.hatenablog.com/entry/2015/10/07/205515)
1. [お前らのSSH Keysの作り方は間違っている - Qiita](https://qiita.com/suthio/items/2760e4cff0e185fe2db9)
1. [GitHubユーザーのSSH鍵6万個を調べてみた - hnwの日記](http://d.hatena.ne.jp/hnw/20140705)
1. [GitHubでEd25519鍵をつかう - ひと目で尋常じゃないもふもふだと(ry](http://jnst.hateblo.jp/entry/2014/12/15/200542)
1. [SSH鍵の暗号化方式を強化してみた。 | しま★りん.blog @ayurina](https://blog.ayurina.net/2016/07/15/ssh%E9%8D%B5%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96%E6%96%B9%E5%BC%8F%E3%82%92%E5%BC%B7%E5%8C%96%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%E3%80%82/)
1. [楕円曲線暗号に 512 bit は存在しない](https://blog.manabusakai.com/2013/08/ecdsa-no-exist-512bit/)
1. [ECDSA鍵をGitHubで使う - Qiita](https://qiita.com/darai0512/items/c7b47d1b3fe06c4dea7d)