SSHについて

初めに!

  • 学習途中で疑問に思ったことを調べ、そのことについてアウトプットしていきます。

  • dockerを勉強してからよくSSH接続を行うためにこれを利用してきちんと理解していく。

SSHとは

  • secure shellの略語で通信内容を暗号化して読み取られないようにするためのプトロコル。

sshの接続の流れを見てみる

  1. クライアント側で秘密キーと公開キーを作成する。

  2. 接続する先のサーバーに公開キーを送る。

  3. クライアント側からサーバー側にSSH接続を行いたい旨を伝える

  4. サーバー側で乱数を生成し、乱数(セッションキー)と公開キーを使用して暗号を作成してクライアント側に暗号を送る。

  5. クライアント側で秘密キーと暗号を使って復号して乱数を取り出す。

  6. クライアント側は乱数からハッシュ値を生成してサーバー側に送る。

  7. サーバー側も生成した乱数からハッシュ値を生成する。

  8. クライアント側とサーバー側が生成したハッシュ値を比較して合致しているか確認する。

秘密キーと公開キーについて

秘密キー
  • 秘密キーはクライアント側が持っているキーで他人に知られてはいけない。

  • 暗号化された通信を解読する際に使用される

公開キー
  • 公開キーはサーバー側に送られるキー。

  • クライアントの身元を確認するために使用される。

  • 秘密キーと公開キーは対になっていて公開キーで暗号化されたデータは秘密キーによってのみ解読することができる。

乱数と公開キーを使用して暗号を作成する

  • サーバ側は乱数を生成し、受け取った公開キーと一緒に使用することで暗号を生成する。

  • 暗号は秘密キーがなければ解読がでいない。解読することで乱数を取り出せる。

クライアント側とサーバー側のハッシュ値の比較

  • クライアント側はサーバー側から送られた暗号から得られた乱数からハッシュ値を生成。

  • サーバー側がサーバー側が生成した乱数からハッシュ値を生成する。

  • どちらも同じハッシュ値であれば承認がされる。

結語

  • SSHは通信情報を暗号化して第三者に情報を抜き取られないようにする仕組み。

  • 秘密キーと公開キーを生成し、それらを使用してクライアント側とサーバ側の確証を行う。