提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
最近Centos8 -stream 系统被扫描出有漏洞,需要升级SSH到9.6 ,网上有好的教程,但总和实际系统有点差别,记录下。本文章从yum源更新写起,一步一步,实验可行。有需要的拿走,升级过程中遇到问题也可以一起探讨
1、yum源配置
CentOS8在2021年底就已经停止维护了~那么网络yum源就需要进行重新设置。
配置yum源
删除 /etc/yum.repos.d 目录中的所有文件,替换 /etc/yum.repos.d 目录中的 CentOS-Base.repo 内容。
替换内容如下`[base]
name=CentOS-8-stream - Base - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
#additional packages that may be useful
[extras]
name=CentOS-8-stream - Extras - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-8-stream - Plus - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/8-stream/centosplus/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[PowerTools]
name=CentOS-8-stream - PowerTools - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/8-stream/PowerTools/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[AppStream]
name=CentOS-8-stream - AppStream - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
`
2、查看当前服务器的openssh版本
ssh -V
- 下载openssh
下载地址Index of /pub/OpenBSD/OpenSSH/portable/
3. 对原来的openssh备份
(1)通过whereis ssh 找到openssh的文件
—
(2)备份ssh和sshd文件或目录
//根据查询出来的目录结果酌情修改 备份文件或目录
4 将openssh上传并解压
tar -zxvf openssh-9.6p1.tar.gz
5. 编译安装openssh
(1)切换到解压后的openssh目录
cd openssh-9.6p1
(2)初始化openssh
./configure --prefix=/usr/local/openssh9p6 --sysconfdir=/etc/ssh --with-pam --with-zlib
(3)安装 cc ,gcc环境
yum -y install gcc
yum -y install gcc-c++
安装好后,再次
./configure --prefix=/usr/local/openssh9p6 --sysconfdir=/etc/ssh --with-pam --with-zlib
提示
(4)安装zlib
yum install zlib-devel
安装完成以后再次执行./configure没有报这个错误了.
安装完成后,再次
./configure --prefix=/usr/local/openssh9p6 --sysconfdir=/etc/ssh --with-pam --with-zlib
提示
6. working libcrypto not found解决
报错原因
出现上述两种报错,是因为缺少openssl-devel包或者libcrypto相关库的位置不正确。
解决办法
第一种解决办法 – 最推荐的解决办法(最简单有效)
yum安装openssl-devel包即可:
yum install -y openssl-devel
第二种解决办法
尝试将编译参数–with-ssl-dir=/usr/local/ssl修改为–with-ssl-dir=/usr/local后再尝试编译;完整编译命令行如下:
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --without-openssl-header-check --with-ssl-dir=/usr/local --with-privsep-path=/var/lib/sshd
第三种解决办法 – yum update来升级OpenSSH(第一种方法无效的情况下推荐此方法)
先执行yum update openssh将OpenSSH_6.4p1升级到高版本(版本比6.4高,肯定不会高于8.0)后,再编译升级到OpenSSH_8.0p1;
yum update openssh
第四种解决办法
如果在生产环境中不支持直接yum安装openssl-devel或者升级OpenSSH的情况下,可先将当前OpenSSH版本编译升级到OpenSSH_7.4p1后再编译升级到OpenSSH_8.0p1。
检查openssl-devel安装情况 ‘
yum list installed |grep openssl-devel,
如果没有就用第一种方案
如果安装了,看看与openssl version是否一致,一般情况下不一致。实验机器为没有安装,选择了第一种方案
如果是版本不一致,请全局搜索下 openssl 目录,看看有没有源码安装目录
找到不一致的源码目录,进入后执行卸载操作
再次执行,应该一切正常。
提示:源码安装系统组件一定要保留编译安装目录,不然出现这种情况基本就得重装系统了。
安装完成后,,再次
./configure --prefix=/usr/local/openssh9p6 --sysconfdir=/etc/ssh --with-pam --with-zlib
提示
7. 安装PAM
yum -y install pam-devel
安装完成后,check通过
## 卸载原有的openssh包
此命令会将找到的openssh相关的rpm包强制删除。
rpm -e --nodeps rpm -qa | grep openssh
8. 编译安装
make -j 4
make install
9. 修改sshd_config文件(一定)
vim /etc/ssh/sshd_config
PermitRootLogin yes 、PubkeyAuthentication yes、PasswordAuthentication yes 将配置文件中这几个改为yes.
说明:
PermitRootLogin yes:允许root用户通过SSH登录到系统
PubkeyAuthentication yes:启用公钥身份验证
PasswordAuthentication yes:启用密码身份验证
12. 复制新的配置文件到原来目录
cp /usr/local/openssh9p6/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh9p6/bin/ssh /usr/bin/ssh
cp /usr/local/openssh9p6/bin/ssh-keygen /usr/bin/ssh-keygen
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
10. 添加权限
chmod +x /etc/init.d/sshd
11. 核对sshd_config文件(一定)
cat /etc/ssh/sshd_config
确保 PermitRootLogin yes 、PubkeyAuthentication yes、PasswordAuthentication yes 配置文件中这几个为yes.
12.开启开机自启sshd
systemctl enable sshd
13.重启sshd
systemctl restart sshd
14. 验证是否成功
sshd -V