CentOS6系のOpenSSHは5.3p1となっています。
# cat /etc/redhat-release
CentOS release 6.9 (Final)
# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
このバージョンはパッチが当てられていて安全に使用できるのですが
脆弱性が多いと噂があり、CentOSのOpenSSHはECDSAの鍵認証を受け付けず、
サポートも対象外なのでいっその事OpenSSHの最新版(7.1p1)へとアップグレードしてみました。
■ 環境
- 使用OS:CentOS 6.9
- シリアルコンソール or telnet で sshd 再起動できること
conoha のVPSは管理画面からシリアルコンソールが開けるのでOK。
※作業中SSHが切断するので注意。
■ 1. 必要なパッケージをインストール
yum groupinstall -y "Base" "Development tools"
yum install -y openssl-devel krb5-devel pam-devel tcp_wrappers-devel
■ 2. OpenSSHのソースを取得して展開
cd
wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-7.1p1.tar.gz
tar xzvf openssh-7.1p1.tar.gz
■ 3. SPECファイルを書き換え
RPM ビルド用SPECにある以下2箇所を 0 → 1 に変更
%define no_x11_askpass 1
%define no_gnome_askpass 1
■ 4. 不要ディレクトリ削除 → configure
cd openssh-7.1p1/contrib
rm -rf aix/ solaris/ suse/ hpux/ cygwin/
cd ..
./configure --without-zlib-version-check
■ 5. RPMをビルドする
cd ..
tar czvf openssh-7.1p1.cust.tar.gz openssh-7.1p1/
rm -rf openssh-7.1p1
rpmbuild --tb --clean openssh-7.1p1.cust.tar.gz
ビルド後 /root/rpmbuild/RPMS/x86_64/ に以下が生成される:
openssh-7.1p1-1.x86_64.rpm
openssh-clients-7.1p1-1.x86_64.rpm
openssh-server-7.1p1-1.x86_64.rpm
openssh-debuginfo-7.1p1-1.x86_64.rpm
■ 6. 旧バージョン削除 → 新バージョン導入
yum remove openssh
rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-7.1p1-1.x86_64.rpm
rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-server-7.1p1-1.x86_64.rpm
rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-clients-7.1p1-1.x86_64.rpm
rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-7.1p1-1.x86_64.rpm
※ yum remove 時に git 等が巻き添え削除されるので注意。
■ 7. sshdの設定復元
旧設定が消えているため必要に応じて /etc/ssh/sshd_config を再設定。
■ 8. sshd再起動
これは SSH以外の経路 で実施推奨:
/etc/init.d/sshd restart
■ 9. 動作確認
ssh -V
→ OpenSSH_7.1p1
■ 10. 巻き添え削除パッケージを再インストール(任意)
yum install -y git perl-Git systemtap systemtap-client
■ おしまい
これで ECDSA 鍵が使用できます。