# 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、在升级过程中务必确保当前使用远程工具所连接的ssh会话不断开,如不能保证会话不断开请务必安装telnet服务,使用telnet来替代ssh会话连接服务器后操作升级,由于本例有本地kvm权限故未配置telnet服务升级,telnet安装故略过。
2、启动编译后的sshd服务请勿使用restart重启,直接启动即可。
由于系统为basic的安装模式,gcc包不全,所以需要先使用本币yum源的安装方法安装gcc安装。
可以使用虚拟机挂载光驱的方式挂载本地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
# 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\
# 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
由于openssh 8.4p1需要openssl1.1.1和zlib的支持,为避免现有服务的影响,采用编译安装openssl1.1.1给openssh使用,使用由于centos6.5本地yum源的zilb包满足openssh 8.4p1所以zlib使用yum安装方式。
# 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
下载地址: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
在卸载现有版本前复制(克隆)当前会话,确保当前的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
下载地址: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
# vim /etc/ssh/sshd_config
Port 20022 <--修改ssh使用的端口
PermitRootLogin yes <--允许root登录
PasswordAuthentication yes <--密码验证
在文件末尾加入如下内容:
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1
在启动前请确保当前的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:关闭
保持现有的会话不关闭,使用远程工具重新开启一个会话连接服务器,确认可正常连接至服务器。
# ssh -V
OpenSSH_8.4p1, OpenSSL 1.1.1g 21 Apr 2020
至此openssh-8.4p1升级成功,使用正常。
原文:https://blog.51cto.com/rongshu/2576850