openssh-5.8p2 の lpk 対応バージョン作ったよ

centos5 対応の openssh5.8p2 + lpkパッチバージョン作ったよ。
動かなくても泣かない人はどうぞ。

http://rtilabs.net/files/2011_05_05/

導入方法

wget http://rtilabs.net/files/2011_05_05/openssh-5.8p2-lpk.rti.1.x86_64.rpm
wget http://rtilabs.net/files/2011_05_05/openssh-server-5.8p2-lpk.rti.1.x86_64.rpm
wget http://rtilabs.net/files/2011_05_05/openssh-clients-5.8p2-lpk.rti.1.x86_64.rpm
rpm -Uvh openssh-5.8p2-lpk.rti.1.x86_64.rpm openssh-server-5.8p2-lpk.rti.1.x86_64.rpm openssh-clients-5.8p2-lpk.rti.1.x86_64.rpm


src.rpm もあるよ!

wget http://rtilabs.net/files/2011_05_05/openssh-5.8p2-lpk.rti.1.src.rpm

作業メモ

忘れないようにメモっとく。

SPRMを取得

元々は この人がつくっていた srpm から派生。
http://marijuana.ddo.jp/


まずは、 srpm をダウンロードして展開する。

cd 
wget http://marijuana.ddo.jp/centos5.5/srpm/openssh-5.8p1-ma.1.src.rpm
rpm -i openssh-5.8p1-ma.1.src.rpm

そうすると、 /usr/src/redhat/spec/ に spec が展開される。
この段階でもビルドは可能。
とりあえずビルドしてみるか。

SPRMをビルド

ビルドするのに必要なパッケージを入れる

yum -y install gtk2-devel libX11-devel openldap-devel autoconf automake perl zlib-devel  util-linux groff pam-devel  fipscheck-devel openssl-devel krb5-devel ncurses-devel libselinux-devel audit-libs xauth  libX11* libXt*


できたので、ビルドしてみる。

rpmbuid -ba openssh.spec

うまく行けば、 以下のファイルが出来る。

find /usr/src/redhat/RPMS/
find /usr/src/redhat/SRPMS/

メモ
rpmbuild のコマンドで -ba だと rpm と spec が。 -bb だと rpm だけ作られる。

lpkパッチ

lpk用のパッチを持ってくる。
version lpk 5.5 ぐらいから SSHキーを格納する LDAPのカラム選べるようになったので最新版で作る。
open-ssh5.8p1 用のパッチを落としてくる。

cd /usr/src/redhat/BUILD
wget http://jfut.integ.jp/linux/openssh/openssh-lpk-5.8p1-0.3.13.patch


あとは、spec を修正してビルドする。

cd /usr/src/redhat/SPEC
vi openssh.spec
------------------------------------
%define ver 5.8p1
%define rel ma.1

↓↓変更-----------↓↓

%define ver 5.8p2
%define rel lpk.rti.1
------------------------------------

パッチを追加した。

------------------------------------
Patch0: openssh-5.8p1-initscript.patch

↓↓変更-----------↓↓

Patch0: openssh-5.8p1-initscript.patch
Patch1: openssh-lpk-5.8p1-0.3.13.patch
------------------------------------

パッチを使うようにした。

------------------------------------
%patch0 -p1 -b .initscript

↓↓変更-----------↓↓
%patch0 -p1 -b .initscript
%patch1 -p1 -b .initscript

------------------------------------


./configure でパッチを使うように修正 --with-ldap を追加.

------------------------------------
%configure \
        --sysconfdir=%{_sysconfdir}/ssh \
        --libexecdir=%{_libexecdir}/openssh \
        --datadir=%{_datadir}/openssh \
        --with-tcp-wrappers \
        --with-rsh=%{_bindir}/rsh \
        --with-default-path=/usr/local/bin:/bin:/usr/bin \
        --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \
        --with-privsep-path=%{_var}/empty/sshd \
        --with-md5-passwords \
        --without-zlib-version-check \
%if %{scard}
        --with-smartcard \
%endif
%if %{rescue}
        --without-pam \
%else
        --with-pam \
%endif
%if %{kerberos5}
         --with-kerberos5${krb5_prefix:+=${krb5_prefix}}
%endif

↓↓変更-----------↓↓

%configure \
        --sysconfdir=%{_sysconfdir}/ssh \
        --libexecdir=%{_libexecdir}/openssh \
        --datadir=%{_datadir}/openssh \
        --with-tcp-wrappers \
        --with-rsh=%{_bindir}/rsh \
        --with-default-path=/usr/local/bin:/bin:/usr/bin \
        --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \
        --with-privsep-path=%{_var}/empty/sshd \
        --with-md5-passwords \
        --without-zlib-version-check \
        --with-ldap \
%if %{scard}
        --with-smartcard \
%endif
%if %{rescue}
        --without-pam \
%else
        --with-pam \
%endif
%if %{kerberos5}
         --with-kerberos5${krb5_prefix:+=${krb5_prefix}}
%endif

------------------------------------
修正をビルドしてみる。

できたので、ビルドしてみる。

rpmbuid -ba openssh.spec

うまく行けば、 以下のファイルが出来る。

find /usr/src/redhat/RPMS/
find /usr/src/redhat/SRPMS/
openssh を入れ替える。

注意: 最悪コンソールからしかログイン出来なくなる可能性があるので、コンソールを触れるように準備しておく。

cd /usr/src/redhat/RPMS/x86_64
rpm -Uvh openssh-5.8p2-lpk.rti.1.x86_64.rpm openssh-server-5.8p2-lpk.rti.1.x86_64.rpm openssh-clients-5.8p2-lpk.rti.1.x86_64.rpm

/etc/init.d/sshd restart


念のため、 openssh が lpk 対応になったかどうか調べる。
対応ルーチンが入っていれば、 UseLPKって文字列があるはずだ!!

strings /usr/sbin/sshd | grep UseLPK

使い方はまた次回。
おしまい。