Skip to content

Commit

Permalink
📝 updates
Browse files Browse the repository at this point in the history
  • Loading branch information
kaityo256 committed Sep 22, 2023
1 parent 9471d4d commit 31bed40
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion ssh/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,13 @@ Gitはローカルリポジトリとリモートリポジトリを連携して

例えば家に帰る時、鍵を開けて入るであろう。これは「この家に入る権利があるのは、このドアの鍵に合う鍵を持っている人である」ということを意味する。一般に、「誰かが何かを行う正当な権利を持っていること」を確認する手続きを認証と呼ぶ。自転車の鍵で、数字を揃えるタイプの鍵を見たことがあるだろう。これは「この自転車を使う権利があるのは、この鍵の数字を知っている人である」という形で認証を行っている。

認証には、大きく分けて「所持認証」「知識認証」「生体認証」の3種類があり、それぞれ特徴がある。「所持認証」とは、特別な物を所有していることをもって、何かの権利があると認証するものだ。例えば家の鍵などがこれにあたる。「知識認証」とは、特別な知識により認証するもので、自転車のナンバー式の鍵などがこれにあたる。「生体認証」とは、指紋認証や顔認証など、体の一部を使って本人であることを確認する方法である。広い意味では所持認証の一種だが、鍵の場合は誰かに貸したり合鍵を作れたりできるが、指紋認証の場合はそれが難しいなど、運用上の性質がかなり異なるため、別のものとして扱った方が良いだろう。
認証には、大きく分けて「所持認証」「知識認証」「生体認証」の3種類があり、それぞれ特徴がある。「所持認証」とは、特別な物を所有していることをもって、何かの権利があると認証するものだ。例えば家の鍵などがこれにあたる。「知識認証」とは、特別な知識により認証するもので、自転車のナンバー式の鍵などがこれにあたる。「生体認証」とは、指紋認証や顔認証など、体の一部を使って本人であることを確認する方法である。生体認証は広い意味では所持認証の一種であるが、鍵は誰かに貸したり合鍵を作れたりできる一方、指紋認証の場合はそれが難しいなど、運用上の性質がかなり異なるため、別のものとして扱った方が良いだろう。以下では生体認証については扱わない。

## SSH公開鍵認証

例えば手元のPCなどでGitを使う場合、GitはそのPCの中にあるリポジトリ(ローカルリポジトリ)とやりとりをする。そのローカルリポジトリを使えるのはそのPCの持ち主だけであり、そこに認証は不要である(そのPCを使える状態になる段階で認証が済んでいる)。

一方、GitHubは不特定多数がネットワーク越しにアクセスする関係上、ネットワークのどこからでも見える状態になっていなければならない。すると、Gitのコマンドにより、データがローカルリポジトリからGitHubに送られてきた時、GitHubは「そのデータを送ってきたのは、確かにそのリポジトリにアクセスする権利を持つ人である」ことをなんらかの方法で認証しなければならない。そのために利用されるのがSSH公開鍵認証である。なお、以下の説明はかなり簡略化されたものであり、実際に行われている認証プロセスとは異なることに注意されたい。

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

0 comments on commit 31bed40

Please sign in to comment.