为什么80%的码农都做不了架构师?>>>   

需求:漏洞整改涉及到升级OpenSSH服务,服务器在内网无法使用yum源等。由于是生产环境,不可随便尝试,以下内容是在本地虚拟机模拟多遍后总结的,当然最终生产环境服务器SSH也升级成功。
一起来见证那些踩过的坑!!!

操作权限:使用root进行操作应该是没有悬念。 操作方式:使用源码编译安装,想偷懒使用rpm包安装,可是找不到合适的包和合适的教程。

准备

  • 下载OpenSSH当前最新版7.3p1
    官网:http://www.openssh.com/
    英文不好,第一次访问并未顺利找到源码包的下载地址。在左侧找到其中的For other OS's找到Linux点进去再往下拉找到,找一个合适的下载空间进去下载最新版即可。
    这里直接提供一个版本下载链接:openssh-7.3p1.tar.gz
  • 由于系统比较老,很多缺省的软件包需要更新或者新装,在下面的教程安装中再一步步说明

配置与安装

解压

tar -zxvf openssh-7.3p1.tar.gz
cd openssh-7.3p1

编译安装目录

pwd

这就是我本机的安装目录/root/UpdateSSH/openssh-7.3p1,以后每一次编译均在此目录下完成,下面脚本中./configure之前均需要cd /root/UpdateSSH/openssh-7.3p1

编译

这里是根据经验使用一下编译配置

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords

以前还会加上--with-pam后来发现新版并不需要此配置,如果加上还要安装对应的依赖包,所以干脆不要了,省的麻烦。
**报错**日志如下(如果你直接成功了,那么恭喜你可以直接跳到安装步骤

checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See 'config.log' for more details.

问题很明显,没有gcc,如果网络正常肯定立马yum install gcc修复此问题。
可惜服务器无法使用公网,最直接的解决办法是找到安装盘找到对应的RPM安装包和依赖包(我本机是使用如下脚本安装,注意安装顺序)

rpm -Uvh kernel-headers-2.6.18-164.el5.i386.rpm
rpm -Uvh glibc-headers-2.5-42.i386.rpm
rpm -Uvh glibc-devel-2.5-42.i386.rpm
rpm -Uvh libgomp-4.4.0-6.el5.i386.rpm
rpm -Uvh gcc-4.1.2-46.el5.i386.rpm

这里需要说明一点为什么需要安装以上包,因为我们首先想到的是安装gcc,可以安装过程会报错

可以根据报错信息找到依赖关系。 没有安装盘的可以使用其他可以上网设备将RPM包事先下好,可以访问镜像站寻找下载,这里采用此方式获取RPM安装包。
本次测试环境是RedHat,而镜像源没有,暂且使用CentOS
首先你需要确认你的系统是什么版本,根据对应的版本下载安装包

lsb_release -a


这里测试机的版本5.4,所以下载的包中应该是包含el5
继续在终端查询操作系统位数

getconf LONG_BIT

这里查出来系统位数为32位,所以下载的包中应该是包含i386 所以对应在这里下载包。
这时坑出现了,镜像站只提供最新版5.11对应的rpm包,而我此处的系统版本为5.4如果下载下来的包安装需要把所有的依赖关系的包全部更新(我个人认为这样相当于把系统更新)
还是直接在安装包IOS文件中找对应的RPM包比较实际
我这里采用的是直接在安装盘找到对应rpm包安装。(如果服务器存储空间足够每次在新装机之后将安装盘所有的rpm包都直接存储到服务器硬盘上这样就可以有备无患,在需要时可以直接使用
**解决办法**采用安装光盘安装RPM包的方式解决

  • 挂载安装光盘
  • 切换到软件包所在目录
cd /media/RHEL_5.4\ i386\ DVD/Server/
  • 安装对应的软件包
rpm -Uvh kernel-headers-2.6.18-164.el5.i386.rpm
rpm -Uvh glibc-headers-2.5-42.i386.rpm
rpm -Uvh glibc-devel-2.5-42.i386.rpm
rpm -Uvh libgomp-4.4.0-6.el5.i386.rpm
rpm -Uvh gcc-4.1.2-46.el5.i386.rpm
  • 不报错就安装成功
gcc -v


gcc已经安装成功,版本为:4.1.2

再次编译1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords

**报错**日志如下(如果你直接成功了,那么恭喜你可以直接跳到安装步骤

......(省略)
checking for zlib.h... no
configure: error: *** zlib.h missing - please install first or check config.log ***

问题很明显,没有zlib,如果网络正常肯定立马yum install zlib修复此问题。
(这里可以尝试将编译参数--with-zlib去掉,此方式未验证)
可惜服务器无法使用公网,最直接的解决办法是找到安装盘找到对应的RPM安装包和依赖包(我本机是使用如下脚本安装,注意安装顺序)

rpm -Uvh zlib-1.2.3-3.i386.rpm
rpm -Uvh zlib-devel-1.2.3-3.i386.rpm

**解决办法**采用安装光盘安装RPM包的方式如上与安装gcc的方式一致,这里不使用这种方式,采用源码编译安装(由于已经有了gcc编译环境,所以可以编译安装了)
在zlib网站找到最新源码安装包zlib-1.2.8.tar.gz下载

  • 解压
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
  • 编译
./configure
  • 安装
make && make install

再次编译2

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords

**报错**日志如下(如果你直接成功了,那么恭喜你可以直接跳到安装步骤

......(省略)
checking for openssl/opensslv.h... no
configure: error: *** OpenSSL headers missing - please install first or check config.log ***

问题很明显,没有openssl-devel,如果网络正常肯定立马yum install openssl-devel修复此问题。
**解决办法**可惜服务器无法使用公网,最直接的解决办法是找到安装盘找到对应的RPM安装包和依赖包(我本机是使用如下脚本安装,注意安装顺序)
这里如果系统和我的版本一致或者更低版本,请不要使用此方式,因为你最终会发现OpenSSH 7.3p1需求的openssl最低需要0.9.8f版本,当然如果版本比0.9.8f更高就可以直接安装了
此处可以不解决直接跳到下一步编译安装升级openssl的解决办法

openssl version -a

rpm -Uvh e2fsprogs-devel-1.39-23.el5.i386.rpm
rpm -Uvh keyutils-libs-devel-1.2-1.el5.i386.rpm
rpm -Uvh libsepol-devel-1.15.2-2.el5.i386.rpm
rpm -Uvh libselinux-devel-1.33.4-5.5.el5.i386.rpm
rpm -Uvh krb5-devel-1.6.1-36.el5.i386.rpm
rpm -Uvh openssl-devel-0.9.8e-12.el5.i386.rpm

再次编译3

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords

**报错**日志如下(如果你直接成功了,那么恭喜你可以直接跳到安装步骤

......(省略)
checking OpenSSL header version... 0090802f (OpenSSL 0.9.8e-rhel5 01 Jul 2008)
checking OpenSSL library version... configure: error: OpenSSL >= 0.9.8f required (have "0090802f (OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008)")

问题很明显,没有openssl版本过低,本机是0.9.8e,而最低配置需要0.9.8f。(用以下方式直接安装0.9.8f也可以修复此问题,已验证)

**解决办法**去openssl官网下载最新稳定版本的openssl-1.0.2h.tar.gz

  • 解压
tar -zxvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
  • 编译(会加一点点自定义配置)
./config --prefix=/usr/local/ssl shared zlib-dynamic enable-camellia
  • 安装
make depend
make && make install
  • 额外配置必须(为OpenSSH升级做准备)
mv /usr/bin/openssl /usr/bin/openssl.bak
#mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
  • 升级成功
openssl version -a

再次编译4

需要加一点点配置参数--with-ssl-dir=/usr/local/ssl这点配置与升级openssl过程中自定义的配置有关

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-ssl-dir=/usr/local/ssl

终于成功了

安装

安装之前将现有的ssh配置文件备份

mv /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
make && make install

如果不备份日志文件会导致新版本的ssh的配置文件无法覆盖旧版文件。
搞定收工

收尾工作

  • 重启sshd服务
service sshd restart
  • sshd服务开机自启动(以前配置过此处可以不执行,但是执行也不会有问题,万无一失)
chkconfig sshd on

参考的‘巨人’

  1. tuicool 此篇文章参考了大致思想,并未实际引用其中的方法。
  2. iteye 此篇文章参考了如何去配置gcc编译安装环境以及查看操作系统版本。
  3. baidu 此篇了解了OpenSSL headers是缺少什么包。
  4. 51cto 此篇了解了编译安装openssl后还需要配置的额外步骤,但是其中有个巨坑echo “/usr/local/ssl/lib” >> /etc/ld.so.conf其中的双引号需要时半角英文的,但是其中是中文的,这也让自己吃一堑长一智吧,不能完全Copy。
  5. 163 此篇了解了编译安装openssl时需要自定义的参数。
  6. csdn 此篇知道了编译安装openssl后在编译openssh时需要带参数--with-ssl-dir=/usr/local/openssl目录依据自定义的配置修改。
  7. 2cto 这篇是根据安装盘安装RPM包,写此篇日志时才看到的

最后吐槽一下BD搜索确实不行,国内论坛环境也确实不好,很多问题解决了帖子也就不了了之了,奈何公司内部网,只能用BD,只能用访问部分国内论坛。

转载于:https://my.oschina.net/makouz/blog/731970

RedHat5 升级OpenSSH服务相关推荐

  1. linux升级ssh到6.6版本,centos6.5升级openssh到7.4版本

    一个同事rpm卸载openssh的时候,使用了参数--erase,导致libssl.so.10依赖也被卸载了,导致yum,wget等服务器无法运行,使用yum等命令时会出现以下报错 libssl.so ...

  2. Linux升级ssh服务

    远程升级openssh服务先安装telnet服务,正常来说使用ssh协议进行连接,连接之后不断开的话升级是没有问题的,ssh配置如果修改,网路突然波动导致断开就连不上了,所以安装telnet备用去进行 ...

  3. Linux升级OpenSSH完整手册

    本手册旨在升级OpenSSH版本,提升Linux安全性. 在RedHat AS3 Update8和RedHat AS4 Update7上测试成功. 一. 升级zLib至1.2.3版本 1. 下载Zli ...

  4. ssh 用密码连接不上、查看openSSH 的版本、CentOS - 升级openSSH,修复安全漏洞

    一  ssh密码连接 1,检查ssh配置文件 #vim /etc/ssh/sshd_config 130 UseDNS no 131 AddressFamily inet 132 PermitRoot ...

  5. oracle rac升级openssh,升级OpenSSH详细步骤

    由于系统扫描到OpenSSH版本太低,所以需要将其升级到高版本.网上搜罗数个文章,都多多少少有点疏漏.加上自己之前没升级过SSH,参考好几个文章查缺补漏才升级成功,着实废了不少劲儿.所以综合一下前辈们 ...

  6. openssh升级sftp_Centos7 升级 openSSH 到7.9p1的详细步骤

    由于项目构建时间比较长,近期安全检查发现openssh有漏洞.所以要升级openssh到7.9p1版本.由于ssh用于远程连接,所以要谨慎操作.本文讲的步骤是在Centos7.3系统.原openssh ...

  7. openssh rpm包_100台CentOS7要升级OpenSSH怎么办?

    背景 现在有 100 台 Centos7 需要升级 OpenSSH 到 8.3,怎么办呢?一台台的操作显然不符合我摸鱼的风格,既然每台操作都一样,Ansible Roles 就有用武之地了. 正常升级 ...

  8. centos7升级openssh

    注意: openssl版本(openssl版本要大于1.0.1,zlib版本要大于1.1.4) 一.安装依赖包 yum -y install gcc make perl # zlib zlib-dev ...

  9. linux7.3ssh登陆不上,centos7.3升级openssh到7.7p1后root用户无法登陆的问题

    主机系统centos7.3.1161升级openssh到当前最新版7.7p1以后使用root用户无法登陆,一直提示用户名密码错误(实际上用户名密码是对的).下面对这个坑进行说明. step 1 .升级 ...

最新文章

  1. java实现对英文字母去重_LeetCode算法题-Unique Morse Code Words(Java实现)
  2. OC基础--OC中的类方法和对象方法
  3. debian 升级linux内核,Debian8升级内核到4.5
  4. hadoop单机环境搭建
  5. ORA-24324 ORA-24323 ORA-01090
  6. JAVA中的MDC类_CMake - 用/ MT而不是/ MD编译
  7. pytorch torchvision.transforms.ToTensor
  8. bufferreader java_Java - BufferedReader对比FileReader到底哪里进行了优化
  9. iDataForum2010数据库技术论坛总结
  10. mysql mgr 读写分离_MySQL Group Replication mgr 单主 proxysql 读写分离配置过程
  11. ppp lcp协商报文有哪些_PPP 点到点协议
  12. C语言函数嵌套学习实例
  13. 推荐系统用户反馈延迟新解法!阿里提出CVR无偏估计算法
  14. linux解除用户锁,linux禁用锁定和解除解锁用户账号的方法
  15. 小白都能看懂 XAMPP的下载安装配置详细教程(含拒绝访问坑)
  16. 每日一库之Go 强大而灵活的电子邮件库:email
  17. jupyter notebook设置标题折叠
  18. 战争与征服服务器维护,战争与征服 8月29日停机维护公告_战争与征服 8月29日更新了什么_玩游戏网...
  19. 使用队列 模拟跳舞舞伴Java实现
  20. Vue中音乐播放器的使用

热门文章

  1. 弹出无边框网页的Javscrpt代码
  2. USequencer系列 |初识
  3. msyql开启慢查询以及分析慢查询
  4. SpringMVC(3):DispatcherServlet详解
  5. STL~Deque简介
  6. C++ 连接数据库的入口和获取列数、数据
  7. [转] Mac os x 使用ftp
  8. Android内存管理-SoftReference的使用
  9. 乐高创意机器人moc_乐高MOC作品欣赏:变形金刚及其他
  10. gorm利用钩子函数BeforeUpdate更新某个字段