2009-09-16

SSH の公開鍵暗号方式によるログイン認証

最近、ようやく ssh のパスフレーズ認証が分かって来たので、メリットとやり方をメモ。

パスフレーズ認証のメリット

Host PC に ssh でログインする場合を考えやう。パスワード認証ならパスワードが漏洩すると、どの PC からでも Host PC に不正ログインされてしまう。

一方、パスフレーズ認証だとパスフレーズ (公開鍵号方式におけるパスワードのこと) が漏洩しても、自分の PC から Host PC に不正ログインを試みない限りログインには成功しない。

その秘密は「公開暗号方式」にある。秘密キーと公開キーという対になるファイルを生成し、「秘密キー」を自分の PC に、「公開キー」を Host PC に置く。これが割り符のかわりになってくれる。パスフレーズを盗んでも、泥棒の PC に「秘密キー」がないと Host PC にはログインできない。

パスワード一つで認証管理するより、パスフレーズ・秘密キー・公開キーの三点セットで認証を行なう方がセキュリティーが高いという理屈。

パスフレーズ認証のやり方

自分の PC を local PC、ログインする対象の PC を host PC と呼ぶ。ここでは、local PC から host PC へパスフレーズ認証する方法を説明する。

秘密キー・公開キーの作り方

まず、local PC でパスフレーズの設定と秘密キー・公開キーのペアを作る。これには ssh-keygen といふコマンドを使う:

local ~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/masayuki/.ssh/id_rsa):

公開キー・秘密キーの置き場所を尋ねてくる。デフォールトの「~/.ssh/id_rsa」で普通は OK。

Created directory '/home/masayuki/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスフレーズの入力を促される。確認のため 2 回入力。

Your identification has been saved in /home/masayuki/.ssh/id_rsa.
Your public key has been saved in /home/masayuki/.ssh/id_rsa.pub.

成功したら、秘密キーが ~/.ssh/id_rsa ファイルに、公開キーが ~/.ssh/id_rsa.pub ファイルに保存された旨が通知される。

パーミッション確認
local ~$ ls -ld .ssh                                     [6:20:17]
drwx------ 2 masayuki ataka 4 2009-09-16 06:20 .ssh/
local ~$ ls -l .ssh/                                     [6:23:08]
合計 8
-rw------- 1 masayuki ataka 2 2009-09-16 06:20 id_rsa
-rw-r--r-- 1 masayuki ataka 1 2009-09-16 06:20 id_rsa.pub

秘密キー .ssh/id_rsa は自分以外、絶対誰にも見せないこと。公開キー .ssh/id_rsa.pub は誰かに見られてもいい。

host PC へ設定

host PC に公開キーを保存する。

local ~$ scp .ssh/id_rsa.pub host:~/
local ~$ ssh host

公開キーを scp で host PC に送ったら、ssh で host PC にログイン。

初めて公開キーを登録する時は、host PC に .ssh ディレクトリーがないでせう。.ssh ファイル (と .ssh/authorized_keys ファイル) を作ってパーミッションを設定する。

host ~$ mkdir .ssh
host ~$ chmod 700 .ssh
host ~$ touch .ssh/authorized_keys
host ~$ chmod 600 .ssh/authorized_keys

最後に、id_rsa.pub の中身を .ssh/authorized_keys に追記する。

host ~$ cat id_rsa.pub >> .ssh/authorized_keys

追記な点がポイント。

local PC 以外の PC (例えば local2 や local3) からログインする場合も、同じやうにして公開キーを .ssh/authorized_keys に追記登録していく。

local PC に戻って、ssh ログインを試みると、パスワードじゃなくてパスフレーズが聞かれるやうになる。

No comments:

Post a Comment