For Want Of A Better Word

sshの公開鍵認証方式について 仕組み

      2015/04/19

【参考】http://www.atmarkit.co.jp/ait/articles/1105/13/news148.html

sshの認証方法で、パスワードを使わずに、公開鍵・秘密鍵を使って認証する方法について、設定はできたのだけど、なぜこれで認証できるのか、秘密鍵と公開鍵とそれぞれ、何をやっているのか、仕組みが分からなかったので整理してみました。

色々混乱していました。

  • 秘密鍵・公開鍵をサーバー上で作って、秘密鍵をリモート接続するクライアントに配置するという点。サーバーの秘密鍵なんだから、なぜ外に持っていくの?とか
  • Macの設定の場合サーバー側でキーを作成しないで、mac側でキーを作成してるけどなんでとか、

ここら辺の鍵の関連がクリアできた気がする。

1 前提として、まず設定から接続まで。

サーバー上作業
  • ①ログインしたいサーバーにssh用ユーザーの作成
  • ②該当ユーザーでssh-keygenコマンドを実行して、~/sshフォルダ配下に秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成する。(システムでアクセスする場合は、パスフレーズは無しにする。)
  • ③サーバー上でid_rsa.pubを~/.ssh/authorized_keyに追記する。(ファイルが存在しない場合は、新規作成。権限はログインユーザー 600。)
  • sshd_configのPubkeyAuthentication yesを有効にして、sshd再起動。
クライアント側作業
  • ④秘密鍵をリモートログイン元のクライアントに配布。
  • ⑤(私はwindows かつ puttyユーザーなので) 秘密鍵をputty形式に変換。
  • ssh接続時、秘密鍵を指定してリモートホストにアクセス

2 sshの公開鍵認証方式について

公開鍵認証とは

下記図で公開鍵暗号化方式について説明している。電子署名の部分が認証の仕組み。
秘密鍵で暗号化したデータを送り、受けてが公開鍵で復号する。
これにより、秘密鍵で暗号化したデータは公開鍵でしか復号化できないので、これにより秘密鍵の所有者と判断できると。。

で、SSHの公開鍵認証の場合は送信者、受信者(鍵の作成者)は下記図の関係性になる。

これを踏まえて最初の作業手順の意味を確認する。
  • ① 秘密鍵の保有者ユーザー(暗号では受信者)を作成する。
  • ② 該当のユーザーの秘密鍵と公開鍵を作成する。
    • ★ここがわからなかった!!★
    • なんでサーバー側で鍵を作成するのという疑問。macはローカルでキーを作成するのかという疑問ssh-keygenというOpensshのコマンドが入っているのがサーバー側だからというだけ。本来は、鍵はログインしたいクライアントで作成するべきだが、便宜上サーバー側で作成していると解釈した。
  • ③ ユーザーの公開鍵をサーバーに設定する。
  • ④ ログインする側が秘密鍵を持たないといけないので、クライアント側に渡す必要がある。
  • ⑤ ここはクライアント固有なので、省略
  • ⑥ どの秘密鍵で暗号化するか
    • この認証のとき、サーバー側ではユーザー名を求めてくる。ユーザー名が分かれば、該当ユーザーの公開鍵で復号化できるか確認して、認証するという仕組みだ!! 

これでどうだ!!

 - 未分類

  関連記事

no image
印刷ボタンの設置方法

Web&Peace http://bost.bostudio.co.j …

no image
【Linux】ログローテート設定サンプルlogrotate

長めの62週に設定。 secure(ssh) [crayon-584c64bb0 …

no image
イーサネット

イーサネット (Ethernet) はコンピューターネットワークの規格の1つで、 …

no image
Amazon EC2 Elastic IPアドレスとは

ここがわかりやすかった。 http://norinoritakanori.blo …

no image
Monacaにリトライ

だいぶ前に触って、それっきりになっていた。モバイルアプリ開発。 入門にあたりダン …