当前位置: 代码迷 >> 综合 >> ubantu 12.05和ubantu 14.05升级 openssl和openssh
  详细解决方案

ubantu 12.05和ubantu 14.05升级 openssl和openssh

热度:99   发布时间:2024-01-28 15:10:36.0

Ubantu 升级 openssl和openssh

安全局扫描系统有一大堆openssl和openssh的漏洞,所以进行升级

参考了三位作者的文档:
https://blog.csdn.net/hexf9632/article/details/99820859
https://blog.51cto.com/xjsunjie/2347949?source=dra
https://blog.csdn.net/hexf9632/article/details/99820859

我用的是

zlib-1.2.11.tar.gz
openssl-1.1.1g.tar.gz
openssh-8.3p1.tar.gz 
1. zlib-1.2.11.tar.gz             # 官方下载地址: http://www.zlib.net/
2.openssl-1.1.1g.tar.gz       # 官方下载地址: https://www.openssl.org/source/
3..openssh-8.3p1.tar.gz         # 官方下载地址: https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

安装包放入到u盘
如果是在线上的代码建议先备份ubantu

一:.挂载u盘
1.查看当前挂载

fdisk -l

2.新建一个目录来挂载硬盘 挂载到mnt/usb

root@h-Default-string:~# cd /mnt
root@h-Default-string:/mnt# mkdir /mnt/usb

3.挂载命令
root@h-Default-string:/mnt# mount /dev/sdb1 /mnt/usb 其中/dev/sdb1 是自己通过查看fdisk -l 得出的
4.不出问题就会挂载成功。
5.卸载u盘:在使用完u盘后,在拔出前需要先键入卸载U盘命令
umount /mnt/usb
备份

tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt/usb/backup.tgz --exclude=/mnt --exclude=/sys /

还原

tar xvpfz backup.tgz -C /

二:.下面来升级 openssl和openssh
1.先建立文件吧安装包放到一起
记得在root权限下运行
cd / 回到根目录

sudo mkdir /openssl  //根目录下创建文件
cd /mnt/usb //进入到挂载U盘的目录 看第一步
cp  zlib-1.2.11.tar.gz    /openssl  //拷贝zlib-1.2.11.tar.gz到openssl目录下
cp openssl-1.1.1g.tar.gz    /openssl  //拷贝openssl-1.1.1g.tar.gz到openssl目录下
cp  openssh-8.3p1.tar.gz     /openssl  //拷贝openssh-8.3p1.tar.gz 到openssl目录下
cd /openssl 					//进入openssl目录
tar -zxvf zlib-1.2.11.tar.gz  //解压 zlib-1.2.11.tar.gz
tar -zxvf penssl-1.1.1g.tar.gz //解压 penssl-1.1.1g.tar.gz
tar -zxvf zopenssh-8.3p1.tar.gz //解压openssh-8.3p1.tar.gz

2.备份openssl和openssh 如果以后需要还原配置什么的,可以替换掉
备份原openssh文件

mv /etc/init.d/ssh /etc/init.d/ssh.old
cp -r /etc/ssh /etc/ssh.old

备份原来的openssl

mv /usr/bin/openssl /usr/bin/openssl.bak 
mv /usr/include/openssl /usr/include/openssl.bak

先查看你自己的openssl版本和openssh版本看后面安装了是否发生变化

openssl version //查看openssl版本
ssh -v			//查看ssh版本

重点来了:因为我要升级的是不能访问外网的环境下的系统会有两个版本,先说能在访问外网的环境下升级
1.卸载:旧的版本,多执行几下,我每次第一次执行都卸载不干净得第二次执行
执行完后再输入

openssl version //查看openssl版本
ssh -v			//查看ssh版本

如果没有版本信息了就卸载成功了

apt-get remove openssl //如果连接不到外网就不要执行了
apt-get remove openssh-server openssh-client //如果连接不到外网就不要执行了
apt-get purge openssl //如果连接不到外网就不要执行了
cd zlib-1.2.11 		//进入到解压的zlib-1.2.11目录
./configure
make
make install 		//如果这三步没报错,就安装完成了
cd ..				//返回 /openssl 目录
cd openssl-1.1.1g 进入到解压的openssl-1.1.1g 目录
./config --prefix=/usr --shared //一定要加上--shared
make
make test
make intall

然后执行 openssl version 出现版本内容就成功了

cd ..            //返回 /openssl 目录
cd openssh-8.3p1 //进入到解压的openssh-8.3p1目录
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-zlib --with-ssl-dir=/usr/local/openssl --with-privsep-path=/var/lib/sshd --with-pam

如果执行这一步出现什么RAW的错误,就先下载libpam0g-dev

apt-get install libpam0g-dev 

如果连接不到外网我在百度云上传安装包然后你们下载下来放入 /openssl中执行:

sudo dpkg -i libpam0g_1.1.3-7ubuntu2.3_amd64.debsudo dpkg -i libpam0g-dev_1.1.3-7ubuntu2.3_amd64.deb

如果执行这一步出现

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.

错误,请一定要下载后缀为xg.tar.gz的版本,如果不行,请在官网下载其他版本
如果还有问题请私信,或者评论哦

make
make install

这样就成功了

然后你用ssh -v发现显示不出来版本信息了,

你进入 cd /usr/sbin目录下
执行 ./sshd -v 你就发现版本信息出来了

然后启动ssh有点变化:

server ssh start //启动ssh
server ssh stop //停止
service ssh restart 重启 

启动ssh后查看ssh是否开启

ps -e | grep ssh

如果出现可sshd 就成功了

注意:连接的时候你可能用sftp连接不上:
先用scp连接看是否连接上,如果出现问题

sudo vi /etc/ssh/sshd_config

看 Port 22前面是否有个#号如果有去掉
然后看PermitRootLogin 和StrictModes前是否有#号去掉

PermitRootLogin  和StrictModes 后面面改成 yes  //这个是开启root用户登录

在这里插入图片描述
然后退出,记得保存

然后执行service ssh restart 重启 一下
看下scp 是否能连接上
如果能连接上,就好,连接不上,私信我或者评论,我会经常在线

然后说说sftp连接不上的原因:
因为对ssh进行了更新,有些文件位置发生了改变,

vi /etc/ssh/sshd_config   

文档最下边
Subsystem sftp 指定的位置你看看是否还有这个问题,不出以为没有!
然后执行 退出文档,执行

cd /
find / -name sftp-server

查找下这个文件的位置
在这里插入图片描述
然后执行

vi /etc/ssh/sshd_config

把 Subsystem sftp 修改为查找到的路径

在这里插入图片描述
然后执行service ssh restart 重启 一下
查看 ssh是否开启

ps -e | grep ssh

在这里插入图片描述
开启后,然后再用sftp连接下试试

如果有问题或者不明白的地方请评论或者私信

  相关解决方案