SSH でパスフレーズの入力を省く

リモートホストへの認証を RSA や DSA などの公開鍵認証で認証をしているとします。 すると、SSH でリモートホストにログインしたりコマンドを送り込むとき、 一回毎にパスフレーズの入力を求められます。 しかし、ssh-agent と ssh-add を使うと、 一度入力すればその後は入力しなくてもよくなります。


SSH でリモートホストにコマンドを送り込む

ssh の第1引数はリモートホストを指定します。 第2引数にコマンドを入れれば、第1引数のリモートホストに送り込まれて リモートホストでの実行結果がローカルホストに表示されます。
% ssh remotehost ls
(remotehost での ls の結果)

ssh-agent

ssh-agent は、認証鍵を保持するプログラムです。 ssh-agent に一度入力したパスフレーズを保持してもらうので、 以降は入力する手間が省けます。

ssh-agent には、大きく分けて2つの使い方があります。

  1. X を起ち上げるときに使う
    すべてのウィンドウが ssh-agent の管理下になります
    startx をするときに ssh-agent に食わして起ち上げます
    % ssh-agent startx

  2. xterm や kterm などを子プロセスとして起ち上げる
    子プロセスとして起ち上げたプロセス(kterm のウィンドウなど)だけが 管理下になります
    kterm を起ち上げるときに ssh-agent に食わして起ち上げます
    % ssh-agent kterm

ssh-agent が起ち上がった状態では、まだ認証鍵は持っていません。 次の ssh-add で認証鍵を追加します。

ssh-add

引数なしで ssh-add を起動すると、 を追加します。ただし、これらのファイルは他人に読めない パーミッションになっていないと無視されます。 引数が与えられると、そのファイルを認証鍵として追加します。 起動すると、パスフレーズを訊いて来ますので、入力すると後は訊かれません。
% ssh-add
Enter passphrase for .... : (パスフレーズを入れる)

FreeBSD の部屋


Last modified: Wed Apr 20 16:08:50 JST 2011