ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

记录CentOS6.8 openssl和openssh升级

2019-03-12 13:51:50  阅读:447  来源: 互联网

标签:openssh openssl telnet usr rpm CentOS6.8 安装 ssh


本文档讲述的升级操作是基于操作系统centos6.8,使用的openssl版本是openssl-1.0.2n.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/lib/libssl.so.1.0.1e  /usr/lib/libssl.so.1.0.1e.oldmv /usr/lib/libcrypto.so.1.0.1e  /usr/lib/libcrypto.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

#设置软链接(把之前备份的文件名字改回来再连接libcrypto.so.1.0.1e.old、libssl.so.1.0.1e.old)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/sshdcp /usr/local/openssh/bin/ssh-keygen  /usr/bin/ssh-keygen
cp /usr/local/openssh/sbin/sshd  /usr/sbin/sshd
cp /usr/local/openssh/bin/ssh  /usr/bin/sshvi  /etc/ssh/sshd_config    增加PermitRootLogin yeschkconfig --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的实际安装路径来决定)  取消软连接  unlink

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的实际安装路径来决定)  取消软连接  unlink

6.3 OpenSSL version mismatch错误

错误提示:sshd:OpenSSL version mismatch. Built against 10000003, you have 100020cf(注意:由于安装的ssl版本不同,错误提示可能不同,表现在10000003、100020cf上)
原因:ssh和ssl版本不匹配
解决方法:卸载系统自带的openssh,安装和现有openssl版本匹配的openssh

标签:openssh,openssl,telnet,usr,rpm,CentOS6.8,安装,ssh
来源: https://blog.csdn.net/weixin_38200154/article/details/88418912

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有