-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
74 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 [email protected] | ||
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= [email protected] | ||
``` | ||
先ほど作られた公開鍵と比べてみよう。 | ||
```sh | ||
$ cat ~/.ssh/id_rsa.pub | ||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD5GvlBtFbKHzjOAEENZz6J2ksxoFJEm4/E8CJW/jFU6Q4RwoZS9cgDAX8rmdeVhfwHcv9dDRHdhoPlvSlhNn0y7aa8tuxzUNvQw/xfK3o0BY1RLZpOoW7uHfYV0heAhCxo5fF7icopP4bBJt6YaaXQrI5HTwjEil4nLOLDdvGLDj+Yfe+LQjdULAHJoThiFA7A9CuWooNbLaktq6dqQhoG75yflw2xqcavmq/ku3CqwH4dITbS0p26quQ2yQkeR2qihn69uI2DEXphlPzaPaFxxA4pxXlTpe4J2AagihhRYgeOx1ygAzktQMU7AuJbmVktlr1uQl++F3fVRmfxCvIe3Qotx/DPp49z9EKl9AvBUfpggnryfUWRXRKvYGObQIg0sP9P0c9xqJX77LAnSg4J72zTi/7kYY/MvxXh5XG/MLG8tQURB+H2q7zPRtOtrQWtxZnAc39KTMaFdsM9LLggjPnizqzM9QcF33ErWHjFQpvSXfXB+7sA6+3tOIfwSJs= [email protected] | ||
``` | ||
全く同じものが表示されていることがわかる。 | ||
## 秘密鍵とパスフレーズ | ||
公開鍵は、その名の通り公開するための鍵なので、誰に見られてもかまわない。 | ||
* GitHubでも任意の公開鍵が見られる話 | ||
* 知識認証と所持認証 |