Q. SSH プロトコル 2 の DSA 公開鍵暗号を使った認証で ssh(1) を運用した
いのですが、どうしたらいいでしょうか?
A. サーバ側の設定は終っているものとして説明します。FreeBSD の場合、
/etc/rc.conf に
sshd_enable="YES"
という設定をいれておけば SSH2 の DSA 認証が使えます。
まずローカルホストで ssh-keygen(1) を実行し、認証鍵を作成します。
この際に秘密鍵を保護するためのパスフレーズが尋ねられます。
パスフレーズは自由に決められ、バージョンによってはパスフレーズなしでも
運用が可能ですが、他人が推測しにくく、できるだけ長いもの
(数十文字でも構いません。)にしましょう。
% ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa): (リターン)
Enter passphrase (empty for no passphrase): (パスフレーズを入力)
Enter same passphrase again: (再度同じパスフレーズを入力)
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@local
などとします(なお、4.3-RELEASE などの FreeBSD の一部のバージョンで
は、2.3 ベースの OpenSSH を採用しているため上記実行例は
多少異なります)。
あるいは OpenSSH 2.9 ベースの ssh を使用している FreeBSD でなら
% ssh-keygen -t dsa
などとします。
次に slogin(1) ないしは ssh(1) でリモートホストにログインし、
相手先の ~/.ssh/authorized_keys2 に公開鍵 (ローカルにできた
~/.ssh/id_dsa.pub) の内容をそのままコピーし追加します。
このとき、公開鍵一つにつき一行なので、余計な改行や空白を入れないよ
うに注意します。もし ~/.ssh/authorized_keys2 がなければ新規作成しま
す。理論上はこれは公開鍵なので人に見られても構いませんし、事実
ssh-keygen(1) の man page にもそのような記述がありますが、念のため
% chmod 600 ~/.ssh/authorized_keys2
とパーミッションは落としておいたほうが無難です。
また、OpenSSH 2.9 ベースの ssh がインストールされている場合には、
プロトコル 2 の RSA も使えます。異なるのは
% ssh-keygen -t rsa
として認証鍵を作成し、あとは DSA 鍵の場合と同様に ~/.ssh/id_rsa.pub
をリモートホストに転送し、~/.ssh/authorized_keys2 に追加します。
パスフレーズ以外では、ssh・scp・slogin の使い方は rsh・rcp・rlogin と
ほぼ同じです。
[管理番号 1576] rsh・rlogin・rcp って何ですか。
を参考にして下さい。
毎回パスフレーズを入力しなくてもすむ方法については [管理番号 1578] で、
より便利な ssh の機能については [管理番号 1579] で解説しています。
グループ名: ssh