文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

CentOS5.3にOpenSSH6.6をインストールする

こんな機会もあるのです〜


f:id:treeapps:20180424102046p:plain

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  828 17:19 openssh-6.6p1-1.x86_64.rpm
-rw-r--r-- 1 root root  808997  828 17:19 openssh-clients-6.6p1-1.x86_64.rpm
-rw-r--r-- 1 root root   16795  828 17:19 openssh-debuginfo-6.6p1-1.x86_64.rpm
-rw-r--r-- 1 root root  422843  828 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で試した方が無難ですね。