部分安装步骤参考了其他博文,详见本文最后
1.关键操作:libcrypto.so.10和libssl.so.10的保存(本人的惨痛教训就是直接rpm openssl后缺失这两个文件导致wget/yum均不能使用。只能现场USB方式复制
# cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old
# cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
2.为升级准备,必须先安装的包:
# yum install xinetd
# yum install telnet-server
允许通过telnet登陆设备
# yum install lrzsz 允许通过secureCRT传输文件
# yum install zlib 前置软件包
3.获取数据包(使用make方式安装)
# wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
# wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
说明:http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssh.html
依据此链接可见:openssh只支持1.0.2K版本的openssl,不支持1.1.0e版本
4.安装openssl:
# cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old
# cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
//复制关键文件
5.卸载openssl
方案1:
# rpm -qa |grep openssl|xargs -i rpm -e --nodeps {}
方案2:
如果执行方案1后openssl version -a 依旧存在,可以使用以下方案强制清理(但可能需要手工建立软链接)
# find / -name openssl
/usr/lib64/openssl
/usr/bin/openssl
/etc/pki/ca-trust/extracted/openssl
# rm -rf /usr/lib64/openssl
# rm -rf /usr/bin/openssl
# rm -rf /etc/pki/ca-trust/extracted/openssl
6.安装openssl
# tar -zxvf openssl-1.0.2k.tar.gz
# cd openssl-1.0.2k
# ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib #必须加上--shared,否则编译时会找不到新安装的openssl的库而报错
# make
# make test #必须执行这一步结果为pass才能继续,否则即使安装完成,ssh也无法使用
# make install
# openssl version -a #查看是否升级成功
恢复关键文件
# mv /usr/lib64/libcrypto.so.10.old /usr/lib64/libcrypto.so.10
# mv /usr/lib64/libssl.so.10.old /usr/lib64/libssl.so.10
7.卸载openssh
(如需备份配置请自行执行mv /etc/ssh /etc/ssh.old)
rpm -qa |grep openssh|xargs -i rpm -e --nodeps {}
8.openssh安装:
使用之前下载的openssh tar包进行安装
# tar -zxvf openssh-7.4p1.tar.gz
# cd openssh-7.4p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd
# make
# make install
# ssh -V #验证是否升级成功
(如果之前复制了配置文件此处请进行恢复)
# service sshd restart
使用22端口远程SSH登陆以确认可行性。
可登陆后删除telnet
# yum remove telnet-server
如果需要修改SSH端口为自定义端口
1.修改ssh端口
# vi /etc/ssh/sshd_config
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
增加两行:
Port 22
Port 12345
保存退出
# /etc/init.d/sshd restart 重启服务
2.修改iptables:新增一行策略
# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 12345 -j ACCEPT
3.修改selinux:
# yum -y install policycoreutils-pythoy
# semanage port -a -t ssh_port_t -p tcp 12345 新增ssh允许端口号
# semanage port -l | grep ssh 检查是否生效
ssh_port_t tcp 10086, 22
# netstat -tpnl | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 26348/sshd
tcp 0 0 :::22 :::* LISTEN 26348/sshd
tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 27627/sshd
tcp 0 0 :::12345 :::* LISTEN 27627/sshd
使用12345的ssh登陆,验证是否可用。
如生效则
# vi /etc/sysconfig/iptables
删除port 22
# /etc/init.d/sshd restart 重启服务
附录:各种报错的解决方案
软链接失效
[root@localhost openssl-1.0.2k]# openssl version -a
bash: /usr/local/bin/openssl: No such file or directory
解决方案:将/usr/local/bin/openssl中新增一个软链接指向真实的 /usr/bin/openssl
ln -s /usr/bin/openssl /usr/local/bin/openssl
安装ssl缺少library的解决方案
configure: error: Your OpenSSL headers do not match your
library. Check config.log for details.
If you are sure your installation is consistent, you can disable the check
by running "./configure --without-openssl-header-check".
Also see contrib/findssl.sh for help identifying header/library mismatches.
解决方案:yum install openssl-devel
安装openssh时发现openssl版本不匹配
checking OpenSSL header version... 1010005f (OpenSSL 1.1.0e 16 Feb 2017)
checking OpenSSL library version... not found
configure: error: OpenSSL library not found.
解决方案:
find / -name openssh
rm -rf 所有搜索结果
正常升级流程可参考下述blog
http://www.cnblogs.com/xshrim/p/6472679.html
修改ssh端口可参考此blog
http://www.2cto.com/os/201405/299466.html