Skip to content

Commit

Permalink
📝 updates
Browse files Browse the repository at this point in the history
  • Loading branch information
kaityo256 committed Sep 23, 2023
1 parent 1a92b35 commit c1c4aa0
Showing 1 changed file with 74 additions and 1 deletion.
75 changes: 74 additions & 1 deletion ssh/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,81 @@ GitHubは不特定多数がネットワーク越しにアクセスする関係

SSH公開鍵認証のポイントは、秘密鍵と公開鍵という、2つの鍵を用意することにある。秘密鍵と公開鍵はペアになっており、対応する鍵でなければぴったり一致しない。そこで、予めなんらかの方法で公開鍵をGitHubのサーバに登録しておき、「登録した公開鍵とぴったり合う秘密鍵を持っている人」が、そのリポジトリにアクセスする権利のある人である、という形で認証を行うことにする。これがSSH公開鍵認証の仕組みであり、認証のタイプとしては所持認証にあたる。

## 秘密鍵と公開鍵の生成

初めてSSH公開鍵を使う場合は、`ssh-keygen`で鍵を作ることができる。ターミナルから以下のコマンドを実行する。

```sh
$ ssh-keygen
ssh-keygen
```

すると、以下のような表示が出てくる。

```sh
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/watanabe/.ssh/id_rsa):
```

これは、「公開鍵、秘密鍵のペアを生成しますよ。保存先の場所を選んでね。何も指定しなければ`/c/Users/watanabe/.ssh/id_rsa`に保存するよ」という意味だ。特に理由がなければそのままエンターを押して良い。

```sh
Enter passphrase (empty for no passphrase):
```

すると、次にパスフレーズを聞かれる。パスフレーズを入力せずにエンターを押すと、パスフレーズなしの秘密鍵が作られるが、 **ここではパスフレーズを入力することを強く推奨する**。なお、パスフレーズを入力しても、画面には何も表示されない(パスフレーズは秘密なので、他の人に見られては困るから)。入力が終わったらエンターキーを押す。

```sh
Enter same passphrase again:
```

もう一度同じパスフレーズを入力し、エンターキーを押す。画面に表示されない状態でパスフレーズを入力したため、もしかしたら入力ミスをしているかもしれない。そこで、もう一度同じパスフレーズを入力し、それが一致していたら正しく入力できたと判断する。

```sh
Your identification has been saved in /c/Users/watanabe/.ssh/id_rsa
Your public key has been saved in /c/Users/watanabe/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:2nMosrJRAKzlDD7zE1qVINL3MYOh6/nTvphyyPUlWCQ watanabe@example.org
The key's randomart image is:
+---[RSA 3072]----+
|+o .oo. |
|oo+.Eo= |
|o=o..+ + |
|.+o= o |
| B oo S |
| o =o .o.. |
| .+ooooo+ . |
| =oo=o. o |
| .==oo. |
+----[SHA256]-----+
```
パスフレーズの入力が終わると、公開鍵、秘密鍵の保存が行われる。上の例では、秘密鍵のファイル名が`id_rsa`、公開鍵のファイル名は`id_rsa.pub`で、どちらも`/c/Users/watanabe/.ssh/`に、保存されている。fingerprintやrandomart imageも表示されているが、今は気にしなくて良い。以上の操作により、公開鍵と秘密鍵のペアが生成された。
公開鍵は、秘密鍵から作ることができる(逆はできない)。正しく秘密鍵/公開鍵が作られ、パスフレーズが設定されたか確認するために、秘密鍵から公開鍵を作ってみよう。`ssh-keygen`コマンドに`-yf`オプションをつけ、秘密鍵を指定すると、秘密鍵から公開鍵を作ることができる。その際、秘密鍵にパスフレーズが設定されていると、パスフレーズの入力も求められる。
```sh
$ ssh-keygen -yf ~/.ssh/id_rsa
Enter passphrase:
```
ここで先ほど設定したパスフレーズを入力すると、秘密鍵から計算された公開鍵が表示される。
```sh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD5GvlBtFbKHzjOAEENZz6J2ksxoFJEm4/E8CJW/jFU6Q4RwoZS9cgDAX8rmdeVhfwHcv9dDRHdhoPlvSlhNn0y7aa8tuxzUNvQw/xfK3o0BY1RLZpOoW7uHfYV0heAhCxo5fF7icopP4bBJt6YaaXQrI5HTwjEil4nLOLDdvGLDj+Yfe+LQjdULAHJoThiFA7A9CuWooNbLaktq6dqQhoG75yflw2xqcavmq/ku3CqwH4dITbS0p26quQ2yQkeR2qihn69uI2DEXphlPzaPaFxxA4pxXlTpe4J2AagihhRYgeOx1ygAzktQMU7AuJbmVktlr1uQl++F3fVRmfxCvIe3Qotx/DPp49z9EKl9AvBUfpggnryfUWRXRKvYGObQIg0sP9P0c9xqJX77LAnSg4J72zTi/7kYY/MvxXh5XG/MLG8tQURB+H2q7zPRtOtrQWtxZnAc39KTMaFdsM9LLggjPnizqzM9QcF33ErWHjFQpvSXfXB+7sA6+3tOIfwSJs= watanabe@example.org
```
先ほど作られた公開鍵と比べてみよう。
```sh
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD5GvlBtFbKHzjOAEENZz6J2ksxoFJEm4/E8CJW/jFU6Q4RwoZS9cgDAX8rmdeVhfwHcv9dDRHdhoPlvSlhNn0y7aa8tuxzUNvQw/xfK3o0BY1RLZpOoW7uHfYV0heAhCxo5fF7icopP4bBJt6YaaXQrI5HTwjEil4nLOLDdvGLDj+Yfe+LQjdULAHJoThiFA7A9CuWooNbLaktq6dqQhoG75yflw2xqcavmq/ku3CqwH4dITbS0p26quQ2yQkeR2qihn69uI2DEXphlPzaPaFxxA4pxXlTpe4J2AagihhRYgeOx1ygAzktQMU7AuJbmVktlr1uQl++F3fVRmfxCvIe3Qotx/DPp49z9EKl9AvBUfpggnryfUWRXRKvYGObQIg0sP9P0c9xqJX77LAnSg4J72zTi/7kYY/MvxXh5XG/MLG8tQURB+H2q7zPRtOtrQWtxZnAc39KTMaFdsM9LLggjPnizqzM9QcF33ErWHjFQpvSXfXB+7sA6+3tOIfwSJs= watanabe@example.org
```
全く同じものが表示されていることがわかる。
## 秘密鍵とパスフレーズ
公開鍵は、その名の通り公開するための鍵なので、誰に見られてもかまわない。
* GitHubでも任意の公開鍵が見られる話
* 知識認証と所持認証

0 comments on commit c1c4aa0

Please sign in to comment.