メモ@2008/12/30

CentOS5にopenssh-4.6p1をインストールする

なんで5系にしないのかと言われると返答に困るのですが、バージョンを上げすぎると互換性がない可能性があるためとでも言っておきましょうか。ここに書いてあるのは、私の環境での実行結果ですので一部必要ないものもあるかも知れません。

openssh-4.6にした理由は、Matchディレクティブが使えるからです。Matchディレクティブを使うと、特定条件下で設定を有効にしたり無効にしたりできるので大変便利です。たとえば、特定のIPからのアクセスであれば、rootログインを許可したりできるわけです(たとえばね)。

インストール

まずはopensshのSRPMを取得して、rebuildします。

# wget http://mirror.proserve.nl/repo/centos/SRPMS/openssh-4.6p1-lpk.src.rpm
# rpmbuild --rebuild openssh-4.6p1-lpk.src.rpm

すると、依存関係で怒られるので、足りないパッケージをyumにてインストールして再チャレンジ。

# yum install gtk2-devel audit-libs-devel nss-devel libX11-devel pam-devel zlib-devel openldap-devel openssl-devel
# rpmbuild --rebuild openssh-4.6p1-lpk.src.rpm

今度はうまくいきましたので、rpmをインストールします。

# cd /usr/src/redhat/RPMS/x86_64/
# rpm -Uvh openssh-[^d]*.rpm*1

これでインストールは完了。もともとが4.3p2だったので、設定ファイルに一部互換性がなくなっているため /etc/ssh/sshd_config を.rpmnewをまねて修正する。(修正しなくてもいい場合もある)

そして、起動スクリプトを少し修正する

107,108c107< #initlog -c "$SSHD $OPTIONS" && success || failure< $SSHD $OPTIONS && success || failure

    • -

> initlog -c "$SSHD $OPTIONS" && success || failure

そして、最後にsshdを再起動して、インストールは完了です。
私はここで、なぜかsshdが再起動せずに泣くことになりましたが、、、なぜでしょう?物理的にマシンのところまで赴いて起動したら特に問題なく起動したので、設定ファイルに不備があるわけではないと思うのですが、理由の分かる方、教えてください。restartすると何回かに1回の確立で起動に失敗しているようです。OKとは出ているのに。。。condrestartのほうがいいのでしょうか(実はcondrestartを使ったことがないのです)。

[追記]
restartだと、stop処理の直後に間髪いれずにstart処理をするから、完全に停止する前に起動処理をして、起動したように見えてしまうのでしょうかね。

condrestartの場合は、stopとstartの間にsleepが入っているため、その危険は少なさそうです。今後はcondrestartを使うようにします。

Matchディレクティブを試す

デフォルトではパスワード認証を許可せず、あるIPからのアクセスに対してはパスワード認証を許可するようにするには、sshd_configに以下のものを追記する。AddressやHostにはワイルドカードが使用可能です。

PasswordAuthentication no ← グローバルな設定
(略)
Match Address 192.168.0.123
 PasswordAuthentication yes ← Matchディレクティブにマッチするもの

*1:debuginfoをインストールしないため

メモ@2008/12/20

今日はPHPネタを集めてみた。また試してみたいことが増えた。。。

Q4Mはすごく興味があるから、PHPで使うことよりも前に、Q4M自体を使ってみなくてはいけないですね。