最新更新日 2002.01.17.
更新項目  /dev/{random|urandom} ついて少し追加。


OpenSSH のインストールだ。
 ま、ssh は今や必須のデーモンである事には違いないですね。と、言う事でインストールします。ssh-1.27 系では無く、OpenSSH をインストールします。これはちょっとてこづりますよ;-)。

 2001/06/11 現在、OpenSSH は openssh-2.9 と、言うバージョンが出ています。これは、デェフォルトで SSH-2 を使う様になりました。今回はその一歩手前のバージョンである OpenSSH-2.5.2 をインストールする事にしましょう。このバージョンは sftp が利用出来る様になったバージョンで、デェフォルトで SSH-1 を利用する最後のバージョンです。

インストールに当たり、最初に必要なモノとして、openssl-0.9.6.tar.gz があります。これは、

ftp://ftp.infoscience.co.jp/pub/Crypto/SSL/Apache-SSL/OpenSSL/

辺りから持ってきてください。そして、OpneSSH は

ftp://ftp.iij.ad.jp/pub/OpenBSD/OpenSSH/portable/

辺りにあります。openssh-2.5.2.tgz と、言うのと、openssh-2.5.2p2.tar.gz が有りますが使うのは、他の OS 様に作られ、configure や make が入って いる openssh-2.5.2p2.tar.gz を利用します。では、早速 OpenSSL と OpenSSH を make してみましょう。

----------------
% tar xvzfp openssl-0.9.6.tgz
% cd openssl-0.9.6
% ./config
% make;make test
# make install
----------------
 /usr/local/ssl と、言うディレクトリにインストールされます。特に問題無くインストールは終わると思います。続いて OpenSSH です。
----------------
% tar xvzfp openssh-2.5.2p2.tar.gz
% cd openssh-2.5.2p2
% ./configure
    :
    :
WARNING: you are using the builtin random number collection service.
Please read WARNING.RNG and request that your OS vendor includes
/dev/random in future versions of their OS.
%
----------------
 configure を走らせると、なんと、/dev/random と言う、ランダムな値を返してくれるデバイスが無い。と、言われます。/dev/random は、基本的には /dev/null とか /dev/zero とかと似たような部類です。/dev/random の発祥は多分 Linux で、最近では *BSD でも用意されるようになりました。しかし、Solaris は 8 になってもまだ無いみたいですね。と、言う事で替わりのモノを用意して上げる必要があります。ここで必要になるのが、egd-0.8 と、言うプログラムです。これは、

ftp://ftp.eos.hokudai.ac.jp/pub/misc/

 辺りにあります。まずこれをインストールする事にします。

----------------
% tar xvzfp egd-0.8.tar.gz
% cd egd-0.8
% mv /usr/ucb/cc /usr/ucb/_cc_
% ln -s /usr/local/bin/gcc /usr/ucb/cc
# make;make install
# cp egd.pl /usr/local/bin

% cd SHA-1.2
% perl Makefile.PL
% make
# make install
----------------
 どうも perl のプログラムの Makefile の編集はよーわーらんです。はい。cc が、/usr/ucb/cc をどうしても見てしまうので、もう、強引に symlink して make しました(^^;;。また、make inetall してもインストールされないので cp しました。

◇注意そのに
 オープンソース祭りの時に、PERL のブースで聞いて来ました;-)。

 perl はモジュールなどを make する時には、perl を make した時の環境を参照するみたいです。Solaris8 で言うと、/usr/perl5/5.00503/i86pc-solaris/Config.pm と、言うファイルになりますが、これを見ると cc='cc' となっていますね。これは、システム標準で付いている perl は SUN の /usr/ucb/cc を利用して make した。と、言う事です。

 なので、Solaris8 の場合は、既存のパッケージを削除して、自分で make した方が良い。と、言う意見がありました。もしくは、私の様に symlink してしまうのが妥当な線の様です。

 が、しかし、OS 標準の perl は 5.005 なので随分と古いです。折角なのでバージョンを上げてしまいましょう。インストール方法ですが、基本的には INSTALL に書いて有るのでそっちを参考にしてください。perl^5.6.1 のインストール方法をさらっと書くと、

----------------
% sh Configure -de -Dcc=gcc
% make
% make test
# make install
----------------
です。-Dcc=gcc で gcc と指定して、-de でオートマチックに configure を走らせました;-)。後はインストールですが、ま、一応 SUN オリジナルのはpkgrm しても特には問題無いです。

 さささ、話は横道にそれましたが、egd-0.8 のインストールはこれで完了で、続いて、デーモンモードで起動する事にします。

----------------
# cp /dev/null /var/tmp/entropy
# /usr/local/bin/egd.pl /var/tmp/entropy
----------------
 /var/tmp/entropy がランダムファイルになります。そして起動です。起動した時、iostat が core dump するかもしれません。あれれ。単独で iostat を動かしてもやはり core dump します。あれれ・・。と、言う事でそれはほっときましょう;-|。

◇注意そのさん
 iostat に付いてですが、どうもオプションを付けて実行すると core dump しない様です。しかし、オプション無しだと core dump します。調査した結果、vold が動いているとオプション無しの場合でもまともに動く事が解りました。

 と、言う事で、egd.pl の中の iostst を呼び出すところをコメントアウトするか、もしくは、/etc/init.d/volmgt を起動するかのどちらかになります。と、言う事ですが、どうも SPARC 版の場合は core dumop しない様です。不思議だ・・。

 これで、/dev/randum の代わりが出来ました。デーモンとして、egd.pl を起動しておく。と、言う事ですね。はい。では気を取り直して OpenSSH の make です。今度は configure 時にオプションを指定してあげます。

----------------
% tar xvzfp openssh-2.5.2p2
% cd openssh-2.5.2p2
% ./configure --with-egd-pool=/var/tmp/entropy --with-dante=/usr/local/lib
% make
# make install
----------------
 今度は make が出来たみたいです。良かったですねぇぇ。ふみふみ。後は、キーの作成を行い、デーモンとして起動すれば、OK ですね。
----------------
# ssh-keygen -b 1024 -f /usr/local/etc/ssh_host_key -N ''
----------------
 /usr/local/etc/ に ssh_host_key.pub が生成されていれば成功です。おめでとうございます。後は、sshd_config を変更したりして任意の設定を施してみてください。以下はデェフォルト設定に手を加えた部分のパッチです。
----------------
6c6
< #ListenAddress ::
---
> ListenAddress ::
11c11
< PermitRootLogin yes
---
> PermitRootLogin no
20c20
< PrintMotd yes
---
> PrintMotd no
----------------
 簡単に説明すると、

ListenAddress ::  IPv6 でのアクセスを受け付けるように変更
PermitRootLogin no root でアクセス出来ないように変更
PrintMotd no    login した時に motd が二回表示されない様に変更

と、まぁ、基本的な部分の変更です;-)。後、一番下の行に Subsystem sftp なんちゃら。と、言う行が有りますが、その名の通り、sftp がサポートされています。是非お試し下さい;-)。

 続いて、ssh でログインした事をログに残す為の設定です。/etc/syslog.conf に以下の行を追加します。

----------------
#auth.notice                    ifdef(`LOGHOST', /var/log/authlog, @loghost)
auth.info                       ifdef(`LOGHOST', /var/log/authlog, @loghost)
----------------
 ファシリティと、ファイル名の間は TAB です。cp /dev/null /var/log/authlog してから syslogd に HUP シグナルを送れば LOG が吐き出される様になります。

 後は、ブート時に起動する様にする為に /etc/init.d/sshd などと言う起動スクリプトを書いてあげて作業はおしまいです。

----------------
#!/bin/sh
# egd.pl + sshd
case $1 in
'start' )
    if [ -f /usr/local/bin/egd.pl ]; then
        /usr/local/bin/egd.pl /var/tmp/entropy &
        sleep 2
        /bin/ps -ef | grep egd.pl | awk '{print $2}' > /var/run/egd.pid &
        /usr/local/sbin/sshd &
    fi
    ;;
'stop' )
    if [ -f /var/run/egd.pid ]; then
        pid=`cat /var/run/egd.pid`
        kill -TERM $pid
        rm /var/run/egd.pid
        echo ' egd stop'
    fi
        if [ -f /var/run/sshd.pid ]; then
        pid=`cat /var/run/sshd.pid`
        kill -TERM $pid
        echo ' sshd stop'
    fi
    ;;
* )
    echo "usage : sshd.sh {start|stop}"
    ;;
esac
----------------
 これを /etc/rc2.d 辺りに S89sshd などとして symlink して上げれば起動時に毎回、sshd が起動する様になります。ありがたいことですね;-)。

 ちなみに、OpenSSH-2.5.2p2 は OpenBSD の成果物なのでデェフォルトで IPv6 Ready 状態です;-)。sshd_config の中での設定になるので自分の好きな設定に変更してください。

 最後に .rhosts を指定した時の様に login した時にパスワードを聞いてこない様に設定する方法を書いておきます。ログイン先のサーバに公開鍵を置いておくと、sshd が login を許してくれる事になります。

----------------
% ssh koro.running-dog.net mkdir ~/.ssh
takachan@koro.running-dog.net's password: 
% ssh koro.running-dog.net chmod 700 ~/.ssh
takachan@koro.running-dog.net's password: 
% cat ~/.ssh/identity.pub | ssh koro.running-dog.net 'cat >> ~/.ssh/authorized_keys'
takachan@koro.running-dog.net's password: 
% ssh koro.running-dog.net chmod 600 ~/.ssh/authorized_keys
%
----------------
 ~/.ssh を作成して、700 に保護してから、~/.ssh/authorized_keys と言うファイルを用意して上げます。これで passwd を打つ代わりに authorized_keys と言うファイルを参照してくれます。

 じゃ、自分のマシン側で、identity.pub ってどうやって作るんだっけな?(^^;;。と、言うのは置いといて、自分のマシンの保護が厳重にましょう。席を離れる時にはちゃんと画面のロックをしてくださいね;-)。

 昔、ちゃっとで一緒にお喋りしていた人からメールが届きました。Solaris で、/dev/{random|urandom} が無いので、bind-9.2.0 が動かないのは周知の事実ですが、今は、こんなものがあるみたいです。これがあると Solaris8 上で bind-9.2.0 が動く様になるみたいです。皆さんチャレンジしてみてください。

http://www.nsug.or.jp/readme/no37/faq.html#Q2
http://www.cosy.sbg.ac.at/~andi/


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.