最近、ようやく 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 ログインを試みると、パスワードじゃなくてパスフレーズが聞かれるやうになる。