こんな機会もあるのです〜
CentOSの5.3にはOpenSSHがプレインストールされていますが、バージョンが4.4なので大変古く、sshd_configでMatchが使えなかったりして非常に困りますね。
yumで入れようとしても4.4以上にならないので、今回手動で頑張ってインストールしてみました。
私はインフラ屋さんではないのであまり自信がありませんが、とりあえずこれで動いているのでメモっておきます。
OpenSSH 6.6のインストール手順
/etc/ssh/のバックアップ
この手順でインストールすると既存の/etc/ssh以下のファイルが消し飛ぶので、事前にバックアップしておきましょう。
例えば/etc/ssh/sshd_config等がよく使われるのでバックアップします。
rpmbuildするための依存をインストールしておく
[root@hoge openssh]$ yum install rpm-build openssl-devel pam-devel krb5-devel
作業時の実行ユーザ
rootでないと面倒なのでrootユーザで作業します。
ダウンロード
http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable
から好きなバージョンをダウンロードできるので、最新verを選択するとよいでしょう。
[root@hoge tmp]$ cd /usr/local/src [root@hoge src]$ wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-6.6p1.tar.gz --17:07:28-- http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-6.6p1.tar.gz ftp.jaist.ac.jp をDNSに問いあわせています... 150.65.7.130 ftp.jaist.ac.jp|150.65.7.130|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 1282502 (1.2M) [application/x-gzip] Saving to: `openssh-6.6p1.tar.gz' 100%[====================================================================================================================================================================================================>] 1,282,502 5.63M/s in 0.2s 17:07:34 (5.63 MB/s) - `openssh-6.6p1.tar.gz' を保存しました [1282502/1282502]
解凍・一部ファイルの編集
後でrpmbuildするのですが、その前にspecファイルを編集します。
[root@hoge src]$ tar zxvf ./openssh-6.6p1.tar.gz [root@hoge src]$ cd openssh-6.6p1/contrib/redhat [root@hoge redhat]$ vi ./openssh.spec # Do we want to disable building of x11-askpass? (1=yes 0=no) %define no_x11_askpass 0 # Do we want to disable building of gnome-askpass? (1=yes 0=no) %define no_gnome_askpass 0
↓
# Do we want to disable building of x11-askpass? (1=yes 0=no) %define no_x11_askpass 1 # Do we want to disable building of gnome-askpass? (1=yes 0=no) %define no_gnome_askpass 1
後でrpmbuildする時邪魔になるので、元のgzは削除しておきます。
[root@hoge openssh]$ rm -rf ./openssh-6.6p1.tar.gz
不要なディストリビューションのフォルダを削除
[root@hoge redhat]$ cd /usr/local/src/openssh-6.6p1/contrib [root@hoge contrib]$ rm -rf aix caldera cygwi hpux solaris suse
rpmbuildでrpmファイル化する
まずは編集の終わったopenssh-6.6p1フォルダを再び圧縮します。
[root@hoge contrib]$ cd /usr/local/src [root@hoge src]$ tar cvfz openssh-6.6p1.tar.gz openssh-6.6p1
圧縮したファイルをrpmにビルドします。
[root@hoge src]$ rpmbuild -tb --clean openssh-6.6p1.tar.gz
ビルドが完了すると、コンソールログの最後に表示されますが、rpmファイルが以下に出力されます。今回はOSが64bitだったので x86_64フォルダに生成されてますが、32bitの場合はi386フォルダに生成されていると思います。この辺はコンソールログを見ましょう。
[root@hoge src]$ ll /usr/src/redhat/RPMS/x86_64/openssh* -rw-r--r-- 1 root root 618790 8月 28 17:19 openssh-6.6p1-1.x86_64.rpm -rw-r--r-- 1 root root 808997 8月 28 17:19 openssh-clients-6.6p1-1.x86_64.rpm -rw-r--r-- 1 root root 16795 8月 28 17:19 openssh-debuginfo-6.6p1-1.x86_64.rpm -rw-r--r-- 1 root root 422843 8月 28 17:19 openssh-server-6.6p1-1.x86_64.rpm
sshdサービスを停止する
ここでsshdを終了させるので、
対象サーバを複数のターミナルで開いておいた方が安全です。
うっかりウインドゥを閉じてしまったりすると、sshできなくなってしまいますので。
[root@hoge src]$ sudo /etc/init.d/sshd stop sshd を停止中: [ OK ]
既存のOpenSSHをアンインストールする
[root@hoge src]$ yum remove openssh Loaded plugins: fastestmirror Setting up Remove Process
rpmbuildしたrpmをインストールする
複数rpmファイルができるので、ワイルドカードで一気にインストールします。
[root@hoge src] rpm -ivh /usr/src/redhat/RPMS/x86_64/openssh-* 準備中... ########################################### [100%] 1:openssh ########################################### [ 25%] 2:openssh-clients ########################################### [ 50%] 3:openssh-debuginfo ########################################### [ 75%] 4:openssh-server ########################################### [100%]
sshdを起動する
OpenSSH v6.6がこれでインストールできたので、sshdを起動して完了です!!
[root@hoge src] /etc/init.d/sshd start ssh-keygen: generating new host keys: ED25519 sshd を起動中: [ OK ]
雑感
失敗すると相当面倒なので、可能であればVagrant等で対象のCentOS環境を用意して、そこで一度試してみるとよいと思います!!
今回私は実機でやってしまったので記憶が曖昧ですが、この作業後にgitがアンインストールされていました。。。依存してたのでしょうかね。
なので、これを機にgit2.1をインストールしておきました。
git2.1のインストールは以下のサイトを参考にさせて頂きました。
git2.1をCentOS6にtgzからインストールする - まーぽんって誰がつけたの?
しかし
./configure –prefix=/usr/local/
が-prefixなんてオプションねーよ!と言われてエラーになってしまったので、
./configure
としました。最終的に /usr/local/bin/git にv2.1のgitのバイナリが生成されました。
できればこの作業も事前にVagrantで作った仮想OSで試した方が無難ですね。