FreeBSD QandA 1949

FreeBSD QandA

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


間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。