linux升级openssh-6.7p1

来源:互联网 发布:gitlab ci runner mac 编辑:程序博客网 时间:2024/05/19 15:39

适用版本
redhat linux 5,6,7
centos 5,6,7
oracle linux 5,6,7
Red Hat Enterprise Linux AS release 3 (Taroon Update 9)
其他linux版本未测试
准备:
下载最新版本的openssl和openssh
openssl-1.0.2.tar.gz
openssh-6.7p1.tar.gz
wget ftp://ftp.openssl.org/source/openssl-1.0.2.tar.gz
wget http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz


ssh -V 查看ssh版本
openssl version -a 查看openssl版本
系统要先安装gcc,zlib,zlib-devel,pam,pam-devel等
yum install gcc zlib zlib-devel pam pam-devel


一. 查看zlib版本,rpm -qa|grep zlib,如果是zlib-1.2.3及以上版本,可不用升级zlib,若不然安装最新的openssh时会报zlib版本过低。
二. 若在步骤1中zlib版本过低,下载zlib1.2.3源码安装包(百度一下zlib1.2.3.tar.gz),这里提供一个链接:http://zhidao.baidu.com/share/debc62758716a169df9f62e6ab2bc634.html。


安装:
a) tar -zxvf zlib-1.2.3.tar.gz
b) cd zlib-1.2.3
c) ./configure --prefix=/usr/local/zlib
d) make
e) make install


注:这里configure的时候会检查缺少哪些东西,缺少的东西补上安装就行,否则无法进行make






解压:
tar zxvf openssl-1.0.2.tar.gz
tar zxvf openssh-6.7p1.tar.gz
查看所需的其他软件包是否完备
rpm -qa|egrep "gcc|gcc-c++|pam|pam-develmake|zlib|perl"| sort
不完备则需要安装
安装openssl
ssh -V
rpm -e `rpm -qa|grep openssl` --allmatches --nodeps


cd openssl-1.0.2
./config --prefix=/usr --shared
make 
make test  
make install
安装openssh
openssl version -a
mv /etc/ssh /etc/ssh.bak
cd ..
cd openssh-6.7p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
rpm -e `rpm -qa|grep openssh` --nodeps
make 
make install
ssh -V
复制启动脚本和设置自启动
cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
启动新的openssh应用
service sshd start


注:这里复制sshd运行脚本,主要是解决可能机器重启后重连sshd会提示密码错误,必须连进主机重启sshd服务才恢复正常的问题
mv /usr/sbin/sshd /usr/sbin/sshd.bak
cp sshd /usr/sbin/sshd
笔者就遇到了这样的问题,问题原因尚不清楚


建软链接库(删除openssl的rpm包的时候被删除了)
cd /usr/lib64(如果是32位系统,则是/usr/lib)
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10
断开,重连
(这里libcrypto.so.1.0.0,和libssl.so.1.0.0在解压的openssl文件夹执行了make过后会有这两个文件)


linux 5额外需要操作
cd /usr/lib
ln -s /usr/lib64/libssl.so.1.0.0 libssl.so
ln -s /usr/lib64/libcrypto.so libcrypto.so
cd /lib64
cp /usr/lib64/libssl.so.1.0.0 libssl.so.1.0.0
ln -s libssl.so.1.0.0 libssl.so.6
cp /usr/lib64/libcrypto.so.1.0.0 libcrypto.so.1.0.0
ln -s libcrypto.so.1.0.0 libcrypto.so.6
总之就是尽量让其他应用程序(比如python)能够找到openssl相关的库文件libssl.so.10,libcrypto.so.10,libssl.so,libcrypto.so, libcrypto.so.6,而我们在存放lib的目录建立软链接
链接至编译出来的最新的库文件libssl.so.1.0.0 和libcrypto.so.1.0.0,这样就不会有问题
为了避免麻烦,可以在卸载当前的openssl之前,在/usr/lib64,/usr/lib,/lib64这些目录查找libssl和libcrypto的条目
例如:
cd /usr/lib64
ls -l libssl*
ls -l libcrypt*
安装完新的openssh后,再去比较少了哪些文件,这时候我们再建新的软链接至新的库即可。
卸载openssl之前查找库文件所在位置
yum whatprovides "*/*libssl.so.6"
yum whatprovides "*/*libssl.so"
yum whatprovides "*/*libcrypto.so.6"
yum whatprovides "*/*libcrypto.so"
yum whatprovides "*/*libssl.so.10"
yum whatprovides "*/*libcrypto.so.10"


后话:

经测试,不用卸载系统自带的openssl的相关软件也没问题,在安装其他软件需要用到openssl库的时候,指定我们编译安装的openssl目录即可


0 0
原创粉丝点击