升级前版本:
openssl-1.0.1e-48.el6_8.1.x86_64 openssh-5.3p1-118.1.el6_8.x86_64
升级后版本:
OpenSSL 1.0.2j
OpenSSH 7.3p1
Step-1:安装相关依赖包
yum install zlib*
yum install gcc
yum install make
Step-2:如果是最小化安装后升级,得更新一些基础东西,不然升级会遇到问题
yum -y install wget openssh-clients openssl-devel
Step-3:官网下载好这两个包放在/tmp目录下
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz
wget https://openssl.org/source/openssl-1.0.2j.tar.gz
Step-4:为确保升级过程没有意外导致ssh会话断开,首先打开telnet服务(使用telnet服务需关闭防火墙或者打开默认端口23)
yum install telnet-server xinetd
sed -i '/disable/s/yes/no/g' /etc/xinetd.d/telnet
service xinetd restart
Step-5:此时换telnet登陆服务器执行后续命令
#备份旧的ssh配置和用户家目录的相关ssh文件
cp -raf /etc/ssh /etc/ssh.old
cp -raf /etc/init.d/sshd /etc/init.d/sshd.old
cp -raf /root/.ssh/ /root/.ssh.old
r_list=`cat /etc/passwd | awk -F ":" '{if($3>=500) print $6}'`
for i in $r_list;do cp -raf $i/.ssh/ $i/.ssh.old done
Step-6:删掉旧的openssl和openssh
rpm -qa | grep openssh | xargs rpm -e --nodeps
rpm -qa | grep openssl | xargs rpm -e --nodeps
Step-7:安装OpenSSL
tar zxf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j ./config --prefix=/usr \ --openssldir=/etc/ssl \ --libdir=lib \ --shared \ zlib-dynamic make depend && make make MANDIR=/usr/share/man MANSUFFIX=ssl install && install -dv -m755 /usr/share/doc/openssl-1.0.2j && cp -vfr doc/* /usr/share/doc/openssl-1.0.2j ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10 ln -s /usr/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.10 ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.10 ln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.10 openssl version #安装完成,应当输出OpenSSL 1.0.2j 26 Sep 2016
Step-8:安装OpenSSH
cd /tmp/
tar zxf openssh-7.3p1.tar.gz
cd openssh-7.3p1
#隐藏版本号配置
sed -i '/SSH_VERSION/s/OpenSSH_7.3/Goodbye/g' version.h sed -i '/SSH_PORTABLE/s/p1/./g' version.h echo "/usr/include/openssl/">>/etc/ld.so.conf ldconfig ./configure --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-md5-passwords \ --with-ssl-dir=/etc/ssl/ \ --with-privsep-path=/var/empty/sshd make make install && install -v -m755 contrib/ssh-copy-id /usr/bin && install -v -m644 contrib/ssh-copy-id.1 \ /usr/share/man/man1 && install -v -m755 -d /usr/share/doc/openssh-7.3p1 && install -v -m644 INSTALL LICENCE OVERVIEW README* \ /usr/share/doc/openssh-7.3p1 cp -raf /etc/init.d/sshd.old /etc/init.d/sshd mv /etc/ssh/sshd_config /etc/ssh/sshd_config.new cp -raf /etc/ssh.old/sshd_config /etc/ssh/sshd_config sed -i 's/GSSAPI/#GSSAPI/g' /etc/ssh/sshd_config sed -i 's/UsePAM/#UsePAM/g' /etc/ssh/sshd_config service sshd restart
Step-9:将sshd设置为开机自启
chkconfig --list sshd
#如果没有的话执行:chkconfig --add sshd
chkconfig sshd on
Step-10:测试SSH是否可以正常使用,以10.10.13.35为例(ssh 10.10.13.35),如果出现密码不正确的提示,则按照如下说明操作,
vi /etc/ssh/sshd_config
- 将
“PermitRootLogin yes”
启用
Step-11:测试sftp是否可以正常使用,如果出现“ssh可以连接但sftp不可以连接”问题时,尝试用如下解决方案进行处理
vim /etc/ssh/sshd_config
- 如下修改配置项:
#override default of no subsystems
#Subsystem sftp /usr/local/openssh/libexec/sftp-server
Subsystem sftp internal-sftp
- 重启sshd服务:
service sshd restart