OpenSSH_6.2p2升级到OpenSSH_7.3p1
OpenSSH_6.2p2升级到OpenSSH_7.3p1 1
前言 2
一:检查依赖软件 3
#安装必要的gcc, gcc-c++编译工具以及libopenssl-devel,pam-devel,zlib-deve 3
二:安装OpenSSL 4
2.1.检查系统自带的openssl 4
2.2.检查openssl版本 4
2.3.检查openssl安装文件以及路径 4
2.4备份上述文件,/usr/bin/X11/openssl为/usr/bin/openssl的软链接 5
2.5安装zlib-1.2.8 5
三:升级openssl 6
3.1安装openssl-fips-2.0.13 6
3.2 检查安装好后的目录文件 6
3.3安装openssl-1.0.2h 7
3.4查看安装好的/usr/local/openssl目录文件 7
3.5 查看/etc/ssl目录 7
3.6配置升级后的openssl的相关目录(链接openssl程序) 8
3.7查看升级的openssl版本 8
四:卸载系统原有的OpenSSH 9
4.1停止sshd服务 9
4.2卸载openssh 9
五:升级OpenSSH 9
5.1安装openssh7.3p1 9
5.2 查看升级后的版本 10
5.3 拷贝sshd启动脚本,contrib/目录下对应系统的启动脚本 10
5.4启动并设置开机启动 10
5.5修改sshd 文件 10
六:升级过程可能会出现的经典错误 11
6.1编译openssh时,出现找不到pam-devel 11
6.2编译过程中出现libpam missing 11
6.3编译过程出现host-key Error 255 12
6.4编译过程中出现错误configure: error: *** Can't find recent OpenSSL libcrypto (see config.log for details) *** 12
6.5编译openssh依赖的是openssl是老版本 12
6.7升级后ssh无法正常登录 13
OpenSSH概念:
OpenSSH是实现远程控制、远程加密传输数据的安全的网络连接工具,也就是为我们提供ssh服务的程序。SSH由服务端和客户端组成,服务端是一个守护进程(sshd),在后台运行并响应客户端的连接请求;客户端包含ssh(openssh-clients)、scp、rsync、slogin、sftp等应用程序。
SSH服务本身提供了一种安全加密的数据传输方式。在一些比较旧的Linux系统版本中,多数是openssh 5版本。而目前OpenSSH已更新到OpenSSH 7.X版本,修复许多存在的安全漏洞,也是较为安全的版本。OpenSSH官网:http://www.openssh.com
系统要求:SUSE Linux Enterprise Server 11 SP2 (x86_64)
安装软件包前提准备:
#zypper in -y gcc gcc-c++
#rpm -ivh libopenssl-devel-1.0.1i-21.1.x86_64.rpm --nodeps --force
#rpm -ivh pam-devel-1.1.8-18.el7.x86_64.rpm --nodeps --force
#rpm -ivh zlib-devel-1.2.8-10.1.x86_64.rpm
Dmj:--nodeps --force
#rpm -q openssl
#由于openssl依赖的软件太多,所以在升级openssl时,不用卸载旧的版本。如果强制卸载可能导致系统不能正常运行
#openssl version
#which openssl
# 在升级过程中将旧版的相关文件进行备份,在升级新版本后重新链接替换为新版本对应的文件目录
#whereis openssl
#ls /etc/ssl
# mkdir /home/ssl_bak
# mv /usr/bin/openssl /home/ssl_bak/
# mv /etc/ssl /home/ssl_bak/etc_ssl
# mv /usr/include/openssl /home/ssl_bak/include_openssl
#解压
#tar -zxvf zlib-1.2.8.tar.gz
#cd zlib-1.2.8
#./configure
#make && make install
#涉及openssl-1.0.2h.tar.gz,openssl-fips-2.0.13.tar.gz这两个包,一并安装上去
#解压openssl-fips-2.0.13.tar.gz
#tar -zxf openssl-fips-2.0.13.tar.gz
#cd openssl-fips-2.0.13/
# --prefix指定openssl的安装目录,记得加上shared参数,生成动态链接库
#./config --prefix=/usr/local/openssl --openssldir=/etc/ssl shared
#make
#make install
#ls /usr/local/openssl
#ls /usr/local/openssl/{bin,include,lib}
#解压openssl-1.0.2h.tar.gz
# tar -zxf openssl-1.0.2h.tar.gz
# cd openssl-1.0.2h/
#./config --prefix=/usr/local/openssl --openssldir=/etc/ssl shared
# make
# make install
#ls /usr/local/openssl/{bin,include,lib}
#ls /etc/ssl/
# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# vim /etc/ld.so.conf
注意:一定放置到lib64上面否则编译openssh时会找不到openssl-1.0.2h只会找到原来版本的openssl进行编译
# ldconfig
#openssl version
# service sshd stop
# zypper rm openssh
# rpm -qa | grep openssh
#tar -zxvf openssh-7.3p1.tar.gz
# cd openssh-7.3p1/
#./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl-1.0.2h --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib-1.2.8 --without-openssl-header-check
#make
#make install
# ssh -V
cd contrib/
#cp suse/rc.sshd /etc/init.d/sshd
#chmod 755 /etc/init.d/sshd
#chkconfig --add sshd
#chkconfig sshd on
#vim /etc/ssh/sshd_config
修改两个,如果没有PermitRootLogin 就手动添加进去
# service sshd start
如果按照我目前提供的文档都提前都准备好了pam-devel这个rpm包,所以编译时不会出现这种情况
由于我们提前安装了pam-devel,后续进行编译写着:./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam--with*(此处省略)
这样的话就会报libpam 在安装过程中去掉--with-pam就可以了
这是因为我们在编译的时候没有加上---with-md5-passwords,所以不会生成host-key
这是OpenSSL没有安装配置好所引起的错误,重新安装OpenSSL即可
在/etc/ld.so.cnf配置OpenSSL时把/usr/loacl/openssl/lib
把/usr/local/openssl/lib放置在lib64位后面,后续编译openssh时不会先检测到先升级后的openssl
需打开PermitRootLogin,PasswordAuthentication即可
如果还有什么疑问请发送邮箱:[email protected]