ssh/ssh-agent

ネタ元

Fedora Core 4 ビギナーズバイブル

Fedora Core 4 ビギナーズバイブル

chapter11 "SSHによる安全な通信".この本はマッチョ系表紙だけにボリュームもマッチョ.

sshd はデフォルトではパスワード認証を行うように設定されている.万が一パスワードが他人にばれれば,そいつは自分に代わって悪戯し放題ってことだ.より硬い認証方式として公開鍵認証を使おう.

鍵の生成と登録

鍵ペア(RSA : SSHv2用)を生成する.

mgmt$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
bb:90:24:c6:d3:cc:97:63:fa:64:86:1d:0a:e7:32:4d username@mgmt

ホームディレクトリの下に秘密鍵(id_rsa)と公開鍵(id_rsa_pub)ができている.

mgmt$ ls -al .ssh
total 20
drwx------   2 username username 4096 May  5 15:04 .
drwxr-xr-x  18 username username 4096 May  5 14:49 ..
-rw-------   1 username username  951 May  5 15:04 id_rsa
-rw-r--r--   1 username username  227 May  5 15:04 id_rsa.pub
-rw-r--r--   1 username username 3009 May  5 14:54 known_hosts

秘密鍵はここでがっちり死守する.公開鍵はログイン先のサーバへ登録しておく.scp か何かでログイン先へ送信して,

sv-bsd$ cat id_rsa.pub >> .ssh/authorized_keys

登録しておく.

sshdの設定変更

公開鍵認証をするのであれば,パスワード認証は止めてしまおう.sshd_config の "PasswordAuthentication" を "no" に設定して sshd を reload する.

ssh-agent

さて,公開鍵を登録して認証を行うことにしたのでこれまでのようにパスワードをサーバへ送る必要はなくなった.ところが,このままだと秘密鍵を開くために毎回 passphrase を入力しなければいけないのだ. passphrase はネットワークを流れないのでセキュリティ的には良くなっているのだが,結局キーワードを入力する手間は変わらず.ということで ssh-agent を使う.ssh-agent は passphrase をメモリに置いて管理するので,最初の1回だけ passphrase を入力すれば後は ssh-agent が勝手にそれを使いまわしてくれる.

起動(使用するシェルを引数として渡す)

mgmt$ ssh-agent $SHELL

起動確認.環境変数等が設定される.

mgmt$ echo $SSH_AGENT_PID
4672
mgmt$ echo $SSH_AUTH_SOCK
/tmp/ssh-GTMMsJ4049/agent.4049
mgmt$ ps aux | grep ssh-agent
501       4672  0.0  0.2   3900  1136 ?        Ss   15:12   0:00 ssh-agent /bin/bash
501       4697  0.0  0.0   1676   488 pts/1    R+   15:13   0:00 grep ssh-agent

秘密鍵の登録.とりあえず手持ちの鍵を全部登録してしまおう.

mgmt$ ssh-add
Enter passphrase for /home/username/.ssh/id_rsa:
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

ここの 1 回だけ passphrase を入力するだけでよい.ssh-agent に登録した秘密鍵に対応する公開鍵を登録したサーバには,以後 passphrase の入力なしに ssh で潜ることができる.

  • ssh-agent で管理している鍵一覧の表示
  • ssh-agent の終了
    • `ssh-agent -k`