リモートホストへの認証を RSA や DSA などの公開鍵認証で認証をしているとします。 すると、SSH でリモートホストにログインしたりコマンドを送り込むとき、 一回毎にパスフレーズの入力を求められます。 しかし、ssh-agent と ssh-add を使うと、 一度入力すればその後は入力しなくてもよくなります。
ssh の第1引数はリモートホストを指定します。 第2引数にコマンドを入れれば、第1引数のリモートホストに送り込まれて リモートホストでの実行結果がローカルホストに表示されます。
% ssh remotehost ls
(remotehost での ls の結果)
ssh-agent は、認証鍵を保持するプログラムです。 ssh-agent に一度入力したパスフレーズを保持してもらうので、 以降は入力する手間が省けます。ssh-agent には、大きく分けて2つの使い方があります。
- X を起ち上げるときに使う
すべてのウィンドウが ssh-agent の管理下になります
startx をするときに ssh-agent に食わして起ち上げます
% ssh-agent startx
- xterm や kterm などを子プロセスとして起ち上げる
子プロセスとして起ち上げたプロセス(kterm のウィンドウなど)だけが 管理下になります
kterm を起ち上げるときに ssh-agent に食わして起ち上げます
% ssh-agent kterm
ssh-agent が起ち上がった状態では、まだ認証鍵は持っていません。 次の ssh-add で認証鍵を追加します。
引数なしで ssh-add を起動すると、を追加します。ただし、これらのファイルは他人に読めない パーミッションになっていないと無視されます。 引数が与えられると、そのファイルを認証鍵として追加します。 起動すると、パスフレーズを訊いて来ますので、入力すると後は訊かれません。
- $HOME/.ssh/id_rsa
- $HOME/.ssh/id_dsa
- $HOME/.ssh/identify
% ssh-add
Enter passphrase for .... : (パスフレーズを入れる)