工作总结——OpenSSH升级-Ubuntu
1概述
Ubuntu 10.04自带默认的OpenSSH_5.3p1 Debian-3ubuntu7.1版本的OpenSSH,以及Ubuntu 11的OpenSSH_5.8p1 Debian-7ubuntu1版本,现需将这些版本升至6.5版本。
PS:在Ubuntu软件安装方式中存在deb安装和源码安装两种,若使用的账户非root,请在命令前面加sudo
2OpenSSH升级
2.1 OpenSSH概述
OpenSSH是实现SSH协议的开源免费软件,大多数Linux发行版本都采用了该软件实现SSH的远程连接,SSH是Secure Shell的缩写,即远程安全壳,旨在为远程连接提供一个安全的加密通道。
SSH相类似的协议有telnet,相比于SSH,telnet采用的是明文方式传输,具有一定的不安全性,而且容易被中间人攻击,所以telnet使用较少。而SSH 使用加密的方式传输,具有加密传输、防止中间人攻击、安全等特点。
2.2 OpenSSH升级准备
2.2.1升级思路
考虑到本次OpenSSH升级采用远程升级的方式,为保证升级正常,将采用另一种远程连接方式telnet来进行升级操作,依次进行OpenSSH原配置文件备份、旧版本OpenSSH删除、安装新版本OpenSSH。
2.2.2升级所需要的安装包
OpenSSH 升级所需安装包:
openssh-6.5p1.tar.gz (官网地址:https://www.wendangku.net/doc/2f17681982.html,)
zlib-1.2.8.tar.gz(用于SSH压缩功能,官网地址是:https://www.wendangku.net/doc/2f17681982.html,/)
1
openssl-1.0.1h.tar.gz(提供加密传输所需的功能,官网地址:https://www.wendangku.net/doc/2f17681982.html,)
2.2.3升级流程
1、上传安装包到服务器上
2、安装telnet服务,并使其运行正常;
3、使用telnet远程连接服务器,正常后端口SSH连接;
4、备份OpenSSH配置文件
5、卸载旧版OpenSSH
6、安装OpenSSH 6.5 版本,并测试正常
7、卸载telnet服务
3升级实施步骤
3.1上传安装包
本次升级采用securecrt远程管理工具对服务器进行远程连接,使用工具自带的sftp功能上传上述安装包至/root目录下,步骤及相关命令如下:
3.1.1打开sftp标签页
使用sftp功能,在左图红色方框处右键,在出现的菜单中选择“连接SFTP 标签页”,出现右图。
3.1.2上传文件
1、设置安装包所在路径
sftp> lcd E:/
2、上传zlib源码安装包
sftp> put zlib-1.2.8.tar.gz
Uploading zlib-1.2.8.tar.gz to /root/zlib-1.2.8.tar.gz
100% 557KB 557KB/s 00:00:00
E:/zlib-1.2.8.tar.gz: 571091 bytes transferred in 0 seconds (557 KB/s)
3、上传OpenSSL源码安装包
sftp> put openssl-1.0.1h.tar.gz
Uploading openssl-1.0.1h.tar.gz to /root/openssl-1.0.1h.tar.gz
100% 4370KB 4370KB/s 00:00:00
E:/openssl-1.0.1h.tar.gz: 4475692 bytes transferred in 0 seconds (4370 KB/s)
4、上传新版OpenSSH源码安装包
sftp> put openssh-6.5p1.tar.gz
Uploading openssh-6.5p1.tar.gz to /root/openssh-6.5p1.tar.gz
100% 1262KB 1262KB/s 00:00:00
E:/openssh-6.5p1.tar.gz: 1293187 bytes transferred in 0 seconds (1262 KB/s)
3.2安装配置telnet
3.2.1安装telnet-server的deb包
# apt-get install telnetd#安装telnet
3.2.2本地测试
telnet服务默认不支持root账户登录,要先新建账户,升级时切换到root 账户进行操作。新建一个账户test,密码123,执行命令
PS(如使用的非root账户,可不用新建账号)
# useradd test
# passwd test
Changing password for user test.
New UNIX password:#输入test账户的密码
BAD PASSWORD: it is WAY too short
Retype new UNIX password:#重复输入test账户密码
passwd: all authentication tokens updated successfully.#完成test账户建立
telnet默认采用的端口是TCP的23号端口,校验端口是否正常,如下:# telnet 127.0.0.1
3.2.3连接telnet
在SecureCRT中新建telnet连接服务器,并切换root权限。
login: test
Password:
Last login: Tue Jun 17 01:42:12 from localhost
test@ubuntu:~$ su root #切换到root账户
Password:
root@ubuntu:/home/test# cd #回到root目录
3.3备份OpenSSH的配置文件
备份OpenSSH相关文件:
# cp /etc/init.d/ssh /etc/init.d/sshd#备份启动脚本
3.4删除OpenSSH
完成配置备份后,将原有的OpenSSH的deb包及其配置文件删除,执行命令# apt-get purge openssh-server openssh-client
3.5安装OpenSSH
安装OpenSSH需先安装其所依赖的zlib和OpenSSL服务。
3.5.1源码编译zlib
# tar -xvzf zlib-1.2.8.tar.gz #解压缩
# cd zlib-1.2.8
/zlib-1.2.8# ./configure --prefix=/usr/local/zlib#检查配置
/zlib-1.2.8# make #编译
/zlib-1.2.8# make install#编译安装
3.5.2源码编译OpenSSL
# tar -xvzf openssl-1.0.1h.tar.gz#解压缩
# cd openssl-1.0.1h#进入目录
/openssl-1.0.1h # ./config --prefix=/usr/local/openssl#检查配置
/openssl-1.0.1h # make #编译
/openssl-1.0.1h # make install#编译安装
3.5.3源码编译OpenSSH
# tar -xvzf openssh-6.5p1.tar.gz#解压缩# cd openssh-6.5p1#进入目录
/openssh-6.5p1 # ./configure \#检查配置
> --sysconfdir=/etc/ssh \
> --with-zlib=/usr/local/zlib/ \
> --with-ssl-dir=/usr/local/openssl
/openssh-6.5p1 #make#编译
/openssh-6.5p1 #make install#编译安装安装完成之后,OpenSSH释放文件的情况如下:
3.6 OpenSSH服务管理
3.6.1建立sshd账户
# useradd sshd#建立sshd账户
3.6.2开机管理OpenSSH
采用service命令进行管理,并设置开机启动,如下:
# /usr/local/sbin/sshd -f /usr/loca/etc/sshd_config
登陆ssh后进行以下操作。
# vi /etc/init.d/sshd #修改sshd的路径:%s#/usr/sbin#/usr/local/sbin#g #执行修改命令
:wq #保存配置文件# update-rc.d sshd defaults#开机启动设置
# service sshd restart
* Restarting OpenBSD Secure Shell server sshd
...done.
3.7 OpenSSH版本验证
# /usr/local/bin/ssh -V
OpenSSH_6.5p1, OpenSSL 1.0.1h 5 Jun 2014
3.8删除telnet
确保OpenSSH升级可用之后,为了保障系统的安全,建议将telnet删除,以免造成安全漏洞,删除telnet只需要将其对应的deb包删除即可,如下:# apt-get purge telnetd #删除telnet
# userdel test #删除test用户
4出现的错误解决
4.1OpenSSH无法配置
配置OpenSSH ,代码如下
/openssh-6.5p1 # ./configure \#配置
> --sysconfdir=/etc/ssh \
> --with-zlib=/usr/local/zlib/ \
> --with-ssl-dir=/usr/local/openssl
出现以下错误:
configure: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) ***
解决方式如下:
添加参数,重新安装OpenSSL,之后正常安装OpenSSH即可。具体如下:
1、为了不要和已安装的openssl混淆,这里指定一个新的安装目录。
/openssl-1.0.1h#/config --prefix=/usr/local/openssl-1.0.1h
2、config之后,会生成Makefile,打开Makefile找到gcc,在CFLAG参数列表里加上-fPIC。PS:第63行
/openssl-1.0.1h# vi Makefile
CC= gcc
CFLAG= -fPIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H
-Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2
-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m
-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM
-DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
3、编译并安装
/openssl-1.0.1h# make
/openssl-1.0.1h# make install
4、之后正常安装OpenSSH,可参考2.2.3,更新OpenSSL的路径即可。