OpenSSH-5.3p1 の例です。
※OpenSSH-4.x 系でも同様
準備
OpenSSH のインストールには OpenSSL と zlib が必要なので、それぞれインストールしておく必要があります。
※なぜか OpenSSL-0.98b だと core dump。
まず、sshd の使用するユーザを作成します。
これは Privilege separation(特権分離:しばしば privsep と省略される)と呼ばれる機能を使用するためで、privsep を使用しないという選択も可能ですが、使用することを強くおすすめします。
下記の例では、sshd というユーザとグループを作成します(デフォルト)。
また、sshd はデフォルトで /var/empty に、 privsep で使用するユーザで chroot しますので、/var/empty も作成します。
# mkdir /var/empty # chown root:sys /var/empty # chmod 755 /var/empty # groupadd sshd # useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd
インストール
準備が整ったら、OpenSSH をビルドします。OpenSSH のソースをOpenSSH の公式サイトから取得します。OpenSSH のコンパイル・インストール自体はお決まりのパターンです。
% ./configure % make % su # make install
OpenSSL のライブラリ等が LD_LIBRARY_PATH 等で参照できない場所にある場合には、--with-ssl-dir で指定します。
また、ユーザ名と chroot するためのディレクトリをデフォルト以外のものにしている場合には、configure のオプションで明示的にそれらを指定する必要があります。
詳しくは、README.privsep を参照してください。
CentOSの場合
configure 時に zlib が無いと言われる場合には、zlib, zlib-develをインストールします。configure 時に libcrypto が無いと言われる場合には、openssl-devel をインストールします。configure 時に zlib のバージョンチェックに引っかかってしまった場合には、zlib のバージョンを上げるか、--without-zlib-version-checkを指定して回避します。
起動スクリプト
contrib 以下に各種起動スクリプトがあるので、これを利用します。
以下、CentOSでの設定例です。
contrib/redhat/sshd.initが起動スクリプトとして使用可能なので、これを適宜修正します。
具体的には、sshd 等のパスを変更します。
KEYGEN=/usr/local/bin/ssh-keygen SSHD=/usr/local/sbin/sshd RSA1_KEY=/usr/local/etc/ssh_host_key RSA_KEY=/usr/local/etc/ssh_host_rsa_key DSA_KEY=/usr/local/etc/ssh_host_dsa_key
修正したスクリプトを /etc/init.d/sshd としてコピーし、initスクリプトとして追加します。
# cp contrib/redhat/sshd.init /etc/init.d/sshd # chkconfig --add sshd
必要であれば、chkconfig --level 等で起動設定を変更します。
※基本はデフォルトでOKのはず
CentOS-5.xの場合
CentOS-5.x からはinitlogが非推奨となったので、init.d/sshd を実行すると、以下のようなエラーが出ます。
Starting sshd:WARNING: initlog is deprecated and will be removed in a future release
上記は警告なので無視しても良いですが、警告を消したい場合には、以下のようにinitlogを外します。
#initlog -c "$SSHD $OPTIONS" && success || failure ←削除 $SSHD $OPTIONS && success || failure ←追加
コメント