平滑升级openssh至6.7

一、环境描述

1)操作系统:CentOS 5.5 64位

2)Openssl升级前版本:openssl 0.9.8e

3)Openssl升级后版本:openssl 1.0.1j(源码安装)

4)Openssh升级前版本:openssh-4.3p2-41.el5

5)Openssh升级后版本:openssh_6.7p1(源码安装)

6)连接工具xshell 4


二、安装Dropbear代替OpenSSH

安装dropbear只是为了在升级失败sshd启动不起来时,依然可以登录系统。也可以用其他工具代替,比如telnet。如果你是直接在机器上操作而不是ssh过去,或者你是ssh过去的,但是怕麻烦,这些工具都可以不用,只要在xshell4中多开几个ssh连接,并保证不会超时断开,这样即使你ssh没有升级成功,起码你还有其他的连接能操作机器。

1)下载dropbear安装包

https://matt.ucc.asn.au/dropbear/releases/dropbear-2014.66.tar.bz2

2)检查安装依赖包

yum install zlib* gcc make

3)编译安装dropbear

# tar jxf dropbear-2014.66.tar.bz2

# cd dropbear-2014.66

# ./configure

# make && make install

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssh升级

检查生成的文件是否正确:

CentOS 5.5 openssh平滑升级到6.7操作步骤_操作系统_02

4)生成证书

# /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

# /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssl升级_03

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssh升级_04

5)启动dropbear

# /usr/local/sbin/dropbear -p 2222    //监听2222端口

查看是否启动成功:

CentOS 5.5 openssh平滑升级到6.7操作步骤_升级openssh_05


三、升级OpenSSL到openssl-1.0.1j,不要删除老版本

1)升级前准备

下载openssl-1.0.1j

http://www.openssl.org/source/openssl-1.0.1j.tar.gz

2)查看旧版本

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssl升级_06

查看旧版本的安装目录,覆盖安装。

# whereis openssl
openssl: /usr/bin/openssl /usr/lib/openssl /usr/share/man/man1/openssl.1ssl.gz
### 这里可以看的出openssl安装在/usr目录下,下面我们可以开始编译安装了:

3)安装openssl, 一定记得加上--shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配

# ./config --prefix=/usr --shared  
# make    
# make test 

# make install

完毕后查看openssl版本安装是否正确

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssh升级_07


四、升级sshd到OpenSSH-6.7并删除老版本ssh

1)升级前准备

查看是否缺包

# rpm -qa | egrep "gcc|make|perl|pam|pam-devel"

如果有配置yum了的话可以直接yum安装这些包,这样既可以检验是否装了,没装的直接装上。

yum -y install gcc* make perl pam pam-devel

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssl升级_08

2)下载openssh-6.7p1.tar.gz

http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz

备份ssh :

# mv /etc/ssh /etc/ssh.bak

# openssl version -a

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssh升级_09    
3)编译安装新版本openssh

# tar zxf openssh-6.7p1.tar.gz && cd openssh-6.7p1  
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords    
# make

先卸载完旧版本的openssh,再make install

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

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssl升级_10

Openssh-askpass是用于图形界面下输入口令的,用不着可以不装

# make install

4)查看是否升级到新版本

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssl升级_11

5)复制启动脚本到/etc/init.d

# cp /root/openssh-6.7p1/contrib/redhat/sshd.init /etc/init.d/sshd

加入开机自启

# chkconfig --add sshd

CentOS 5.5 openssh平滑升级到6.7操作步骤_openssh升级_12

6)启动sshd,用start或reload。不要restart,restart 会直接断开连接,而并不会接着启动sshd服务,这时候要通过其他途径进入机器,然后启动sshd服务才行。

CentOS 5.5 openssh平滑升级到6.7操作步骤_操作系统_13

四、删除dropbear。

在xshell里再重新打开一个标签,

在这里Dropbear用来防止升级不成功,用来替代openssh连接服务器。

在开启2222端口(dropbear启动时的端口,可以设置别的 )的情况下,通过xshell连接的方法是:

Xshell:\> ssh 192.168.4.1 2222 (192.168.4.1为需要连接的服务器ip)

CentOS 5.5 openssh平滑升级到6.7操作步骤_操作系统_14

删除dropbear安装的文件,并杀掉进程

# rm -rf /etc/dropbear/ /usr/local/sbin/dropbear /usr/local/bin/dropbear*

CentOS 5.5 openssh平滑升级到6.7操作步骤_升级openssh_15

CentOS 5.5 openssh平滑升级到6.7操作步骤_操作系统_16