SSH認証のイメージ
GitLabの利用を開始する際によくわからず困ったため、
備忘録としてSSHによる認証のイメージを書き留めておきます。
はじめに
サーバーで大切なデータを取り扱う場合、
誰にでもアクセスさせる訳にはいきません。
この人はサーバーにアクセスしてもいい人なのか?
チェックするための仕組みが必要です。
GitLabなどのサービスでは、SSH(Secure Shell)という通信の仕組みを用いて、
このチェック(=認証)をしています。
簡単に説明すると、
「公開鍵」と「秘密鍵」という、一組の鍵のペアを用意して、
この一組の鍵が揃っていると、サーバーにアクセスできる、という仕組みです。
より詳しい説明は、以下のとおりです。
くわしい仕組み
まず、アクセスする側の人(=クライアント)で、
「公開鍵」と「秘密鍵」のペアを用意します。
このとき、
公開鍵 = 錠前🔓
秘密鍵 = 錠前を開ける鍵🔑
とイメージすると分かりやすいです。
公開鍵🔓はサーバーに預けます。
サーバーは、乱数を生成し、これを公開鍵で暗号化します。
宝箱に秘密の合言葉(=乱数)を入れて、錠を掛けておくイメージです。
そして、暗号化した乱数を、クライアントに送ります。
これを受け取ったクライアントは、暗号化されたデータを、秘密鍵を使って、
元の状態に戻します。これを復号化といいます。
施錠された宝箱の中身を、鍵🔑を使って取り出すイメージです。
クライアントは乱数に基づいて、ハッシュ値というものを作り、
サーバーに送ります。
サーバーは、手元に用意していたハッシュ値と、送られてきたハッシュ値を照合し、
一致していれば、クライアントを認証します。
参考サイト
公開鍵と秘密鍵の仕組みや違いについて分かりやすく説明してみた: 小粋空間
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
https://wa3.i-3-i.info/word11722.html