本文档讲述的升级操作是基于操作系统centos6.5,使用的openssl版本是openssl-1.0.2l.tar.gz,openssh版本是openssh-7.6p1.tar.gz。

1. 依赖检查

检查以下软件是否安装

#rpm -qa | grep gcc(检查gcc是否安装)
#yum install gcc(如果没有gcc,安装gcc,如果有,此步骤跳过) #rpm -qa|grep pam(检查pam是否安装)
#yum install pam (如果没有pam,安装pam,如果有,此步骤跳过) #rpm -qa|grep pam-devel(检查pam-devel是否安装)
#yum install pam-devel (如果没有pam-devel,安装pam-devel,如果有,此步骤跳过)
注意:pam-devel包必须与系统的pam包版本一致 #rpm -qa|grep zlib(检查zlib是否安装)
#yum install zlib(如果没有zlib,安装zlib,如果有,此步骤跳过) #rpm -qa|grep zlib-devel(检查zlib-devel是否安装)
#yum install zlib-devel(如果没有zlib-devel,安装zlib-devel,如果有,此步骤跳过)

2. 开启telnet服务和FTP服务

开启telnet服务和ftp服务,防止升级ssh出现问题时,可以通过telnet登陆,以及通过ftp上传文件。

2.1 检查xinetd、telnet-server、vsftpd是否安装

# rpm -qa | grep xinetd(检查xinetd是否安装)
# yum install xinetd(如果没有,则安装xinetd,否则跳过此步骤) # rpm -qa | grep telnet-server(检查telnet-server是否安装)
# yum install telnet-server(如果没有,则安装telnet-server,否则跳过此步骤) # rpm -qa | grep vsftpd(检查vsftpd是否安装)
# yum install vsftpd(如果没有,则安装vsftpd,否则跳过此步骤)

2.2 配置telnet

修改配置文件vim /etc/xinetd.d/telnet

service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
#disable = yes
disable = no
}

注意:将disable = yes 改为disable = no

2.3 启动服务

chkconfig xinetd on (使telnet服务开机启动,避免升级过程中服务器意外重启后无法远程登录系统)
mv /etc/securetty /etc/securetty.old #允许root用户通过telnet登录
service xinetd start(启动telnet服务)
service vsftpd start(启动ftp服务)

telnet服务开启后,测试下是否能通过telnet成功登陆

3. OpenSSL升级

下载地址:http://www.openssl.org/source

根据ssl安装目录不同,这里介绍两种升级方式。

3.1 备份当前ssl

mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
mv /usr/lib64/libssl.so.1.0.1e /usr/lib64/libssl.so.1.0.1e.old

3.2 方法一(安装在/usr/local/openssl下)

(1) 卸载旧版本

rpm -qa | grep openssl (查看当前安装的版本)
# 使用rpm命令卸载旧版本
rpm -e --nodeps openssl-1.0.0-27.el6.x86_64
rpm -e --nodeps openssl-devel-1.0.0-27.el6.x86_64

(2)安装openssl

tar -zxvf openssl-1.0.2l.tar.gz (解压文件)
cd openssl-1.0.2l
./config --prefix=/usr/local/openssl shared
make
make test(进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用)
make install #设置软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so
ln -s /usr/local/openssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.10
ln -s /usr/local/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10 #将 OpenSSL 的动态链接库地址写入动态链接装入器(dynamic loader)
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
#重新加载动态链接库
ldconfig -v #查看当前系统的openssl版本
openssl version -a

3.3 方法二(安装在/usr目录下)

安装在/usr目录下,会覆盖旧版本数据

(1) 卸载旧版本

rpm -qa | grep openssl (查看当前安装的版本)
#使用rpm命令卸载旧版本
rpm -e --nodeps openssl-1.0.0-27.el6.x86_64
rpm -e --nodeps openssl-devel-1.0.0-27.el6.x86_64

(2) 安装openssl

tar -zxvf openssl-1.0.2l.tar.gz (解压文件)
cd openssl-1.0.2l
./config --prefix=/usr --shared
make
make test(进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用)
make install #设置软链接
ln -s /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.10
ln -s /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10 #查看当前系统的openssl版本
openssl version -a

4. OpenSSH升级

下载地址:http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable

(1) 备份当前ssh

mv /etc/ssh /etc/ssh.old
mv /etc/init.d/sshd /etc/init.d/sshd.old

(2) 卸载旧版本

rpm -e --nodeps `rpm -qa | grep openssh`

(3) 安装ssh

tar -zxvf openssh-7.6p1.tar.gz (解压)
cd openssh-7.6p1
./configure --prefix=/usr --with-zlib --sysconfdir=/etc/ssh --with-ssl-dir=/usr --with-md5-passwords --with-pam(注意:如果使用方法一安装openssl,要将--with-ssl-dir=/usr改为--with-ssl-dir=/usr/local/openssl)
make
make install #验证openssh版本
ssh -V

(4) 启动ssh服务

cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
service sshd restart

注意:如果升级操作一直是在ssh远程会话中进行的,上述sshd服务重启命令可能导致会话断开并无法使用ssh再行登入(即ssh未能成功重启),此时需要通过telnet登入再执行sshd服务重启命令

5. 系统功能验证后关闭telnet服务

验证系统是否正常,没有问题再关闭telnet服务

mv /etc/securetty.old /etc/securetty
chkconfig xinetd off
service xinetd stop

如需还原之前的ssh配置信息,可直接删除升级后的配置信息,恢复备份。

rm -rf /etc/ssh
mv /etc/ssh.old /etc/ssh

6. FAQ

卸载openssl后,升级安装后,执行某些命令时,可能会遇到一些错误

6.1 libcrypto.so.10错误

错误提示:error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory

原因:软链接/usr/lib64/libcrypto.so.10不存在

解决方法:ln -s /usr/lib64/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10,或者是 ln -s /usr/local/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10(根据openssl的实际安装路径来决定)

6.2 libssl.so.10错误

错误提示:libssl.so.10: cannot open shared object file: No such file or directory

原因:软链接/usr/lib64/libssl.so.10不存在

解决方法:ln -s /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.10,或者是ln -s /usr/local/openssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.10(根据openssl的实际安装路径来决定)

6.3 OpenSSL version mismatch错误

错误提示:sshd:OpenSSL version mismatch. Built against 10000003, you have 100020cf(注意:由于安装的ssl版本不同,错误提示可能不同,表现在10000003、100020cf上)

原因:ssh和ssl版本不匹配

解决方法:卸载系统自带的openssh,安装和现有openssl版本匹配的openssh

记录openssl和openssh升级中遇到的问题以及解决方法的更多相关文章

  1. java开发中遇到的问题及解决方法(持续更新)

    摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...

  2. hexo 升级5.4.0出现错误解决方法-hexo-theme-butterfly

    本篇文章已同步个人博客,可移步食用.hexo 升级 5.4.0 出现错误解决方法 -hexo-theme-butterfly 周末升级了下 hexo 到新版本,发现升级后,构建时出现了一些错误,以下是 ...

  3. VS2012中丢失ArcGIS模板的解决方法

    VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...

  4. js中style.display=""无效的解决方法

    本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...

  5. SpringBoot拦截器中无法注入bean的解决方法

    SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册 ...

  6. asp.net url址址中中文汉字参数传递乱码解决方法

    中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...

  7. @NamedEntityGraphs --JPA按实体类对象参数中的字段排序问题得解决方法

    JPA按实体类对象参数中的字段排序问题得解决方法@Entity @Table(name="complaints") @NamedEntityGraphs({ @NamedEntit ...

  8. 关于验证码在IE中不刷新的快速解决方法

    今天在做验证码的时候发现在IE中,验证码不会刷新,而谷歌等其他浏览器没有问题,所以我想到应该是缓存问题,因为IE默认的设置是如果访问地址没变化就不会去获取而是加载缓存中的内容 所以解决方案就是在验证码 ...

  9. 在启动php时,无法启动此程序,由于计算机中丢失MSVCR110.dll的解决方法

    在启动php时,运行RunHiddenconsole.exe php-cgi.exe -b 127.0.0.1:9000 -c时,出现错误:无法启动此程序,由于计算机中丢失MSVCR110.dll 方 ...

随机推荐

  1. Ubuntu 18.04 安装 docker, 设置阿里云加速

    1.卸载旧的 docker 环境 sudo apt-get remove docker docker-engine docker.io containerd runc 2.设置仓库 更新索引 sudo ...

  2. Shell脚本之for循环语句的应用

    在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同.这时候可以使用for循环语句,针对不同的取值重复执行相同的命令序列. for循环语句的语法结构: ...

  3. pypcap rpm制作

    1.下载地址 https://pypi.org/project/pypcap/#history 2.下载后,解压并制作rpm tar -xvf pypcap-1.2.3.tar.gz python s ...

  4. undertow配置

    # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动项目会报错:打开文件数过多 #server.undertow.io- ...

  5. anaconda3 安装pip3

    事先安装了anaconda3版本,此时想要安装pip3,需要: https://bootstrap.pypa.io/get-pip.py 打开链接,将文本存到本地,命名为get_pip.py. 然后通 ...

  6. 详解 `HTTP` 系列之一

    前言 本文介绍的是HTTP的基础知识,包括HTTP的由来.HTTP的报文信息.状态码.HTTP三个版本的对比等.希望这篇简短的文章能对大家认识HTTP协议提供帮助. HTTP的前世今生 HTTP 由来 ...

  7. JVM大作业5——指令集

    JVM的每一个线程都有一个虚拟机栈,方法调用时,JVM会在虚拟机栈内为该方法创建一个栈帧. 一条线程,只有正在执行的方法对应的栈帧时可活动的,这个栈帧被称为当前栈帧,当前栈帧对应的方法被称为当前方法, ...

  8. seo快速排名利器之高权重二级域名

    http://www.wocaoseo.com/thread-225-1-1.html        正规的白帽手法优化一个关键词一般都需要两三个月才能把词做上去,但是现在也有一批做网站优化的采取特殊 ...

  9. 如何利用微博客进行seo赚钱营销

    http://www.wocaoseo.com/thread-130-1-1.html       我们知道做SEO就是用人的思维来模仿搜索引擎的习惯,尽量适应seo的规则,并按照搜索引擎的规则和习惯 ...

  10. 深入了解v-model流程

    v-model原理 vue中v-model是一个语法糖,所谓的语法糖就是对其他基础功能的二次封装而产生的功能.简单点说,v-model本身就是父组件对子组件状态以及状态改变事件的封装.其实现原理上分为 ...