編譯安裝升級openssh 8.4p1
一、安裝gcc
1.1、系統環境及注意事項
1.1.1、系統環境
# lsb_release -d
Description: CentOS release 6.5 (Final)
# uname -r
2.6.32-431.el6.x86_64
當前ssh版本
# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
1.1.2、注意事項
1、在升級過程中務必確保當前使用遠程工具所連接的ssh會話不斷開,如不能保證會話不斷開請務必安裝telnet服務,使用telnet來替代ssh會話連接服務器後操作升級,由於本例有本地kvm權限故未配置telnet服務升級,telnet安裝故略過。
2、啓動編譯後的sshd服務請勿使用restart重啓,直接啓動即可。
1.2、使用iso配置yum源
由於系統爲basic的安裝模式,gcc包不全,所以需要先使用本幣yum源的安裝方法安裝gcc安裝。
1.1.1、掛載光驅
可以使用虛擬機掛載光驅的方式掛載本地Yum源,配置過程如下:
# mount /dev/cdrom /mnt
# # ll /mnt
總用量 682
-r--r--r-- 2 root root 14 11月 29 2013 CentOS_BuildTag
dr-xr-xr-x 3 root root 2048 11月 29 2013 EFI
-r--r--r-- 2 root root 212 11月 28 2013 EULA
-r--r--r-- 2 root root 18009 11月 28 2013 GPL
dr-xr-xr-x 3 root root 2048 11月 29 2013 images
dr-xr-xr-x 2 root root 2048 11月 29 2013 isolinux
dr-xr-xr-x 2 root root 655360 11月 29 2013 Packages
-r--r--r-- 2 root root 1354 11月 28 2013 RELEASE-NOTES-en-US.html
dr-xr-xr-x 2 root root 4096 11月 29 2013 repodata
-r--r--r-- 2 root root 1706 11月 28 2013 RPM-GPG-KEY-CentOS-6
-r--r--r-- 2 root root 1730 11月 28 2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r-- 2 root root 1730 11月 28 2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r-- 2 root root 1734 11月 28 2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r-- 1 root root 3380 11月 29 2013 TRANS.TBL
1.1.2、配置本地yum源文件
# cd /etc/yum.repos.d/
# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
# mkdir bak
# mv *.repo
# vim iso.repo
複製以下內容到編輯的文件中並保存文件
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt
gpgcheck=0
enabled=1
# yum list | grep gcc <--檢查確認yum源配置正常
libgcc.x86_64 4.4.7-4.el6 @anaconda-CentOS-201311272149.x86_64/6.5
compat-gcc-34.x86_64 3.4.6-19.el6 c6-media
compat-gcc-34-c++.x86_64 3.4.6-19.el6 c6-media
compat-gcc-34-g77.x86_64 3.4.6-19.el6 c6-media
gcc.x86_64 4.4.7-4.el6 c6-media
gcc-c++.x86_64 4.4.7-4.el6 c6-media
gcc-gfortran.x86_64 4.4.7-4.el6 c6-media
gcc-gnat.x86_64 4.4.7-4.el6 c6-media
gcc-java.x86_64 4.4.7-4.el6 c6-media
gcc-objc.x86_64 4.4.7-4.el6 c6-media
gcc-objc++.x86_64 4.4.7-4.el6 c6-media
libgcc.i686 4.4.7-4.el6 c6-media
mingw32-gcc.x86_64 4.4.6-4.el6 c6-media
mingw32-gcc-c++.x86_64 4.4.6-4.el6 c6-media
mingw32-gcc-gfortran.x86_64 4.4.6-4.el6 c6-media
mingw32-gcc-objc.x86_64 4.4.6-4.el6 c6-media
mingw32-gcc-objc++.x86_64 4.4.6-4.el6 c6-media\
1.3、yum安裝gcc
# rpm -qa |grep gcc <--確認當前安裝的gcc包
libgcc-4.4.7-4.el6.x86_64
# yum -y install gcc <--安裝gcc
# rpm -qa |grep gcc
libgcc-4.4.7-4.el6.x86_64
gcc-4.4.7-4.el6.x86_64
二、安裝openssh8.4的依賴包
由於openssh 8.4p1需要openssl1.1.1和zlib的支持,爲避免現有服務的影響,採用編譯安裝openssl1.1.1給openssh使用,使用由於centos6.5本地yum源的zilb包滿足openssh 8.4p1所以zlib使用yum安裝方式。
2.1、yum安裝zlib包
# rpm -qa zlib <--確認現有安裝的zlib包已有zlib但是缺少zlib-devel
zlib-1.2.3-29.el6.x86_6
# yum -y install zlib-devel
# rpm -qa zlib*
zlib-1.2.3-29.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
2.2、編譯安裝openssl
下載地址:https://files-cdn.cnblogs.com/files/luckjinyan/openssl-1.1.1g.tar.gz
# tar zvxf openssl-1.1.1g.tar.gz
# cd openssl-1.1.1g
# ./config --prefix=/usr/local/openssl
# make -j 4 && make install <--可根據cpu核心數確定make -j的參數
# echo '/usr/local/openssl/lib' >> /etc/ld.so.conf
# ldconfig -v
檢查系統自帶openssl和編譯安裝版本是否正常
# cd /usr/local/openssl/bin <--進入編譯安裝的目錄
# pwd
/usr/local/openssl/bin
# ./openssl version <--確認編譯版本正常
OpenSSL 1.1.1g 21 Apr 2020
# openssl version <--確認系統自帶版本正常
OpenSSL 1.0.1e-fips 11 Feb 2013
三、編譯安裝openssh
3.1、查看、備份並卸載當前版本的ssh
在卸載現有版本前複製(克隆)當前會話,確保當前的ssh會話不斷開。
# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
# rpm -qa | grep openssh
openssh-server-5.3p1-94.el6.x86_64
openssh-clients-5.3p1-94.el6.x86_64
openssh-5.3p1-94.el6.x86_64
備份原版本ssh配置
# cp -rf /etc/ssh /etc/ssh_bak
# rpm -e --nodeps `rpm -qa | grep openssh`
warning: /etc/ssh/sshd_config saved as /etc/ssh/sshd_config.rpmsave
# rpm -qa | grep openssh
驗證基礎工具正常使用,執行命令無報錯即可
# curl -V
# wget -V
# yum --version
3.2、編譯安裝openssh
下載地址:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz
# tar zvxf openssh-8.4p1.tar.gz
# cd openssh-8.4p1
# ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl
# make -j 4 && make install <--可根據cpu核心數確定make -j的參數
複製命令文件
# cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
# cp /usr/local/openssh/bin/ssh /usr/bin/ssh
# cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
複製啓動管理文件,確保在解壓的openssh-8.4p1編譯目錄下執行
# cp contrib/redhat/sshd.init /etc/init.d/sshd
3.3、修改編譯後的配置文件
# vim /etc/ssh/sshd_config
Port 20022 <--修改ssh使用的端口
PermitRootLogin yes <--允許root登錄
PasswordAuthentication yes <--密碼驗證
在文件末尾加入如下內容:
KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1
3.4、添加開機啓動並啓動編譯的openssh
在啓動前請確保當前的ssh會話不斷開。一定要注意的是不使用restart的選項啓動而是直接start啓動sshd服務。
啓動編譯後的ssh 8.4的服務,使用start參數啓動,一定不要使用restart啓動。
# /etc/init.d/sshd start
Starting sshd: [確定]
服務啓動後檢查配置的端口正常
# netstat -tpln | grep ssh
tcp 0 0 0.0.0.0:20022 0.0.0.0:* LISTEN 14821/sshd
# chkconfig --list | grep sshd <--查詢當前系統無sshd的開機啓動
# chkconfig sshd on <--加入開機啓動
# chkconfig --list | grep sshd <--確認開機啓動加入正常
sshd 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
3.5、驗證升級
3.5.1、使用ssh遠程工具重新連接
保持現有的會話不關閉,使用遠程工具重新開啓一個會話連接服務器,確認可正常連接至服務器。
3.5.2、檢查升級後的版本
# ssh -V
OpenSSH_8.4p1, OpenSSL 1.1.1g 21 Apr 2020
至此openssh-8.4p1升級成功,使用正常。