CentOS6のOpenSSHが古い問題でいろいろ大変です。
CentOSのデフォOpenSSH(5.3p1)はちょっとアレなんで最新版(7.1p1)をコンパイルしてみたでかなり詳しく正確に書いてくれているのでなになんですが、ちょっとリマインドで書いておきます。
今回既存のSSHが5.3で7.5にバージョンアップしたという感じです。CentOS6やRedhad系だったらそこそここのやり方でOKな筈。
OpenSSH_5.3p1
↓
OpenSSH_7.5p1
しかし結果からいうとtelnetや最近のクラウドサービスのコンソール的なものでSSH以外で接続しておかないとちょっと怖い感じがあります。
とはいえきちんと設定しればSSHの再起動で接続は切断されますが、すぐにSSHログインができるようにはなります。
バージョンの確認
http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/
最新版を確認しましょう。2017-05-29現在では、openssh-7.5p1.tar.gzが最新。
実際の作業はバージョンアップというよりもOpenSSHをまるごと入れ替える感じなので、バージョンの乖離は基本問題にならないと思うので最新のものを入れてしまえばよいかと。
下準備
まだインストールしていない人は入れておいた方がいいらしい。
yum update
yum groupinstall -y "Base" "Development tools"
yum install -y openssl-devel krb5-devel pam-devel tcp_wrappers-devel
インストール
ソースを落として解凍。
cd /usr/local/src
wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
tar xzvf openssh-7.5p1.tar.gz
openssh.specを修正。※これちゃんとやらないとrpmビルドできません。
cd /usr/local/src/openssh-7.5p1/contrib/redhat/
vi openssh.spec
12行目、15行目あたりのパラメータを0から1に修正。
12 %define no_x11_askpass 1
15 %define no_gnome_askpass 1
これでOK
続いて不要なディレクトリ削除。redhat以外のディレクトリはいらないです。
cd ../
rm -fr aix cygwin hpux solaris suse
先程修正したファイルを含めたopenssh-7.5p1をもう一度tarして、rpmビルド。
cd ../../..
tar czvf openssh-7.5p1.cust.tar.gz openssh-7.5p1
rm -rf openssh-7.5p1 (*1)
rpmbuild --tb --clean openssh-7.5p1.cust.tar.gz
*1 このタイミングで削除しなくても全然いいです。後でやってください。
ここでビルド失敗したらやり直しですが、たいていうまくいきます。
確認は、
cd /root/rpmbuild/RPMS/x86_64
ls -al
-rw-r--r-- 1 root root 485096 May 29 21:42 openssh-7.5p1-1.x86_64.rpm
-rw-r--r-- 1 root root 610968 May 29 21:42 openssh-clients-7.5p1-1.x86_64.rpm
-rw-r--r-- 1 root root 16976 May 29 21:42 openssh-debuginfo-7.5p1-1.x86_64.rpm
-rw-r--r-- 1 root root 388528 May 29 21:42 openssh-server-7.5p1-1.x86_64.rpm
が生成されていればOKです。
最新のSSHをインストール
ここが嫌なところですが、SSHの接続が切れるところではありません。
yum -y remove openssh
rpm -Uvh openssh-7.5p1-1.x86_64.rpm
rpm -Uvh openssh-server-7.5p1-1.x86_64.rpm
rpm -Uvh openssh-clients-7.5p1-1.x86_64.rpm
rpm -Uvh openssh-debuginfo-7.5p1-1.x86_64.rpm
これでSSHが最新バージョンに入れ替わります。
再起動します。
ここで設定がマズイとSSHログインできなくなります。ここでは既存のsshd_configの設定をそのまま踏襲という感じなので、設定関連でログインできなくなるというのはまずないと思うのですが、SSH以外の何かしらで接続しておいた方が安全です。
service sshd restart
これで接続していたセッションが切れて一度ログアウトしますが、いつものやりかたでSSH接続してください。無事ログインできたらバージョン確認。
sshd -v
OpenSSH_7.5p1, OpenSSL 1.0.1e-fips 11 Feb 2013
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
[-E log_file] [-f config_file] [-g login_grace_time]
[-h host_key_file] [-o option] [-p port] [-u len]
となっていたら成功。
お疲れ様でした。
http://abyssluke.hatenablog.com/entry/2015/10/11/210055
http://qiita.com/typista/items/79d311680c0d87ea63c0