編譯安裝升級openssh 8.4p1

編譯安裝升級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升級成功,使用正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章