rpm包方式升级OpenSSH8.0版本

    centos7.x默认采用的是OpenSSH_7.4p1这个版本,但是有些漏洞扫描设备扫描出OpenSSH_7.4p1版太低,不安全类似的问题,解决方式呢,就是升级OpenSSL更高版本,考虑到 不是一两台服务器,使用源码包方式安装太费劲了,建议使用rpm包导入后直接安装。

建议先安装telnet服务 到最后不至于连服务器都连不上了!!

1、安装rpm-build和openssh依赖包

yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel unzip  libXt-devel imake gtk2-devel openssl-libs -y

2、创建目录

mkdir -p /root/rpmbuild/{SOURCES,SPECS}
cd /root/rpmbuild/SOURCES

3、按照需求上外网下载对应版本
下载源

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz
wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz

4、解压包和其他操作 复制粘贴即可

tar zxvf openssh-8.0p1.tar.gz openssh-8.0p1/contrib/redhat/openssh.spec
openssh-8.0p1/contrib/redhat/openssh.spec
cp openssh-8.0p1/contrib/redhat/openssh.spec ../SPECS/
chown sshd:sshd /root/rpmbuild/SPECS/openssh.spec
cp /root/rpmbuild/SPECS/openssh.spec /root/rpmbuild/SPECS/openssh.spec_def

5、修改openssh.spec文件

sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec

sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec

6、生成rpm包

cd /root/rpmbuild/SPECS/
rpmbuild -ba openssh.spec

//生成时报错

error: Failed build dependencies:
openssl-devel < 1.1 is needed by openssh-8.0p1-1.el7.x86_64

//解决方法:

[root@localhost SPECS]# pwd
/root/rpmbuild/SPECS
[root@localhost SPECS]# vi openssh.spec

#BuildRequires: openssl-devel < 1.1  //定位到这行 注释掉即可!

编译完成后,会产生4个rpm包,放在/root/rpmbuild/RPMS/x86_64目录下。在服务器上,创建一个openssh文件夹,把这四个包拷贝过来,执行yun -y install ./* 即可。

7、安装测试

[root@localhost x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@localhost x86_64]# yum -y install *
[root@localhost x86_64]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2k-fips  26 Jan 2017

//权限设置

cd /etc/ssh/
chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key

//openssh8.0版本默认root不可用远程登入,编辑配置文件配置允许root远程登入

vi /etc/ssh/sshd_config
..... //添加或者更改为下面内容即可!
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin yes
.....
[root@localhost ~]# sshd -t
[root@localhost ~]# systemctl restart sshd

//最后一步 openssh会受selinux的限制 所以要关闭selinux

sed -i  s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 

最后测试连接的时候一定要多打开几个窗口 以防万一root用户登不上,或者安装telnet服务,别把自己害了,给多留点后路!!


我还写了一个基于没有网络离线安装的脚本

注:这个脚本是基于我的环境编写的,仅供参考

#!/bin/bash
#### 配置YUM源####

clear
echo -e  "\t\t########################"
echo -e  "\t\t#     配置YUM仓库      #"
echo -e  "\t\t########################"

sleep 1 
echo -e "启动脚本....................................\033[32m [成功] \033[0m"
sleep 1
echo -e "备份YUM源中.................................\033[33m [稍等] \033[0m"
sleep 3 
mkdir /etc/yum.repos.d/yum.bak &>/dev/null 
mv /etc/yum.repos.d/* /etc/yum.repos.d/yum.bak/ &>/dev/null
id &>/dev/null 
if [ $? -eq 0 ];then

echo -e "备份YUM源...................................\033[32m [成功] \033[0m"

else
echo -e "备份YUM源...................................\033[31m [失败] \033[0m"
fi

sleep 1

  echo -e "配置YUM源中.................................\033[33m [稍等] \033[0m"
sleep 1
cat > /etc/yum.repos.d/local.repo <<EOF
[local]
name=localyum
baseurl=ftp://10.10.14.51/pub/centos7.9
enabled=1
gpgcheck=0
EOF

yum clean all &>/dev/null

if [ $? -eq 0 ];then
  echo -e "配置YUM源...................................\033[32m [成功] \033[0m"
else 
  echo -e "配置YUM源...................................\033[31m [失败] \033[0m"
fi

#### 配置install openssh8.0 ####
clear
echo -e  "\t\t########################"
echo -e  "\t\t#   配置安装openssh    #"
echo -e  "\t\t########################"

echo -e "安装依赖包....................................\033[33m [稍等] \033[0m"
RPMS='zlib-devel openssl-devel gcc perl-devel pam-devel unzip'
yum install -y $RPMS &>/dev/null

read -p "请输入存放RPM包绝对路径目录位置:" path

if [ -d $path ];then
 echo -e "判断文件是否存在.......................... \033[032m [存在] \033[0m"
 cd $path
yum -y install * &>/dev/null
    if [ $? -eq 0 ];then
      echo -e "安装成功...................................\033[032m [成功] \033[0m"   
    else
      echo -e "安装失败...................................\033[031m [失败] \033[0m"
    fi
else
  echo -e "判断文件是否存在......................... \033[031m [不存在] \033[0m"
fi
sleep 2
#### 其他 配置####
clear
echo -e  "\t\t########################"
echo -e  "\t\t#    其他 配置         #"
echo -e  "\t\t########################"

cd /etc/ssh/
chmod 400 ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
if [ $? -eq 0 ];then
echo -e "调整权限....................................\033[032m [成功] \033[0m"
else
echo -e "调整权限....................................\033[031m [失败] \033[0m"
fi
sleep 2 

clear
echo -e  "\t\t########################"
echo -e  "\t\t#     最后的配置       #"
echo -e  "\t\t########################"

cat >> /etc/ssh/sshd_config <<EOF
PubkeyAuthentication yes
PasswordAuthentication yes 
PermitRootLogin yes
EOF

sshd -t &>/dev/null
if [ $? -eq 0 ];then
read -p "完成所有配置是否重启sshd服务[Y/N]:" yn
  if [ $yn == y ];then
    systemctl restart sshd
    sleep 2 

    if [ $? -eq 0 ];then
    echo "[重启成功]"
    else 
    echo "[重启失败]"
    fi

  elif [ $yn == n ];then
    echo "[完成]没有重启sshd服务"
  else 
    echo "[输入无效]"
  fi
fi
sleep 2
clear
echo "SElinux开启状态会影响到root用户禁止远程登入状态"
read -p "是否关闭SElinux?[Y/N]:" yn2

if [ $yn2 == y ];then
setenforce 0
sed -i  s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
echo "[已关闭]"
elif [ $yn2 == n ];then
echo "[不进行操作]"
else
echo "[输入无效]"
fi

最后送上 openssh8.0的rpm包,上面构建openssh8.0没有成功的小伙伴可直接下载rpm包,导入后yun -y install ./* 即可。rpm包提取码:1111

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神奇的海马体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值