CentOS7 升级到最新OpenSSH 8.8p1详细脚本

致谢:feichai 2020年07月16日于 废柴博客 发表:Centos7 升级OpenSSH 8.2p1的详细步骤【附安装包、脚本】

实测版本:CentOS Linux release 7.8.2003 (Core),CentOS8升级后测试无法登陆,请谨慎使用。

提醒:虚拟机升级前做好快照,物理机对重要文件备份。

一、升级前检查系统版本:

[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[root@localhost ~]# uname -r
3.10.0-1127.el7.x86_64

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

 二、升级准备

1、设置路径:/root/OpenSSH

2、给路径设置权限;

3、服务器联网,如果不能联网手动下载安装包

zlib1.2.11    http://www.zlib.net/zlib-1.2.11.tar.gzopenssl-1.1.1mhttps://www.openssl.org/source/openssl-1.1.1m.tar.gzopenssh-8.8p1https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz

 4、依赖包需要:gcc gcc-c++ make pam pam-devel openssl-devel pcre-devel perl zlib-devel,可以在下面的网站搜索下载(有版本号比较好检索下载)

RPM Search

软件包 gcc-4.8.5-44.el7.x86_64
软件包 gcc-c++-4.8.5-44.el7.x86_64
软件包 1:make-3.82-24.el7.x86_64
软件包 pam-1.1.8-23.el7.x86_64
软件包 pam-devel-1.1.8-23.el7.x86_64
软件包 1:openssl-devel-1.0.2k-22.el7_9.x86_64
软件包 pcre-devel-8.32-17.el7.x86_64
软件包 4:perl-5.16.3-299.el7_9.x86_64
软件包 zlib-devel-1.2.7-19.el7_9.x86_64

准备好的下载链接请参考

gcc  gcc-c++  make pam pam-devel  openssl-devel  pcre-devel  perl zlib-devel

三、开始升级

将下面的脚本(UpdateOpenSSH.sh)上传至/root/OpenSSH目录,并给定执行权限。执行./UpdateOpenSSH.sh,等待升级完毕。

#!/bin/bash
 
clear
echo ------------------------------------------
echo        CentOS7 openssh升级到8.8p1
echo              $(date +%F-%T)
echo         注意环境,使用前请做好测试!!!
echo ------------------------------------------
sleep 3s
clear
echo 安装进程开始  3
sleep 1s
clear
echo 安装进程开始  3  2
sleep 1s
clear
echo 安装进程开始  3  2  1
sleep 1s
clear
echo 刷新yum元数据缓存
sleep 2s

yum makecache
sleep 3s
clear
echo 检测安装telnet服务
sleep 1s
echo 尝试启动telnet服务
sleep 1s
cp /etc/securetty /etc/securetty.bak
grep  "pts/0"  /etc/securetty ||  echo 'pts/0' >> /etc/securetty
grep  "pts/1"  /etc/securetty ||  echo 'pts/1' >> /etc/securetty
systemctl restart telnet.socket &&  systemctl restart xinetd
ps -ef |grep xinetd | egrep -v grep > /dev/null
if [ $? -eq 0 ]
then
	echo 检测到telnet服务已启动……
	systemctl enable telnet.socket
	systemctl enable xinetd
        sleep 2s
else
	echo 未检测到telnet服务,开始安装服务……
	sleep 2s
	yum -y install xinetd telnet-server
	sleep 2s
	clear
	echo 安装telnet服务结束,启动服务……
	systemctl restart telnet.socket &&  systemctl restart xinetd
	systemctl enable telnet.socket
	systemctl enable xinetd
	sleep 1s
fi
clear
echo 关闭SElinux及防火墙并禁用……
sleep 2s
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
cat /etc/selinux/config
systemctl stop firewalld.service
systemctl disable firewalld.service
sleep 2s
clear
echo 安装程序依赖包……
sleep 2s
yum -y install gcc gcc-c++ make pam pam-devel openssl-devel pcre-devel perl zlib-devel
sleep 1s
clear
echo 停止并卸载原有ssh
sleep 3s
systemctl stop sshd
cp -r /etc/ssh /etc/ssh.old
cp -r /etc/init.d/ssh /etc/init.d/ssh.old
rpm -qa | grep openssh
sleep 1s
rpm -e `rpm -qa | grep openssh` --nodeps
rpm -qa | grep openssh
sleep 1s
clear

echo 判断是否需要安装wget
WGET=`rpm -qa | grep wget`
if [$WGET -z ];then
    yum install -y wget
fi
echo 准备文件和参数
echo ################################################################
echo 服务器无法联网下载的可以将所需要的升级包放到/root/OpenSSH目录下
echo ################################################################
file=/root/OpenSSH
zlib=http://www.zlib.net/zlib-1.2.11.tar.gz
openssl=https://www.openssl.org/source/openssl-1.1.1m.tar.gz
openssh=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz
echo 创建目录
mkdir -p $file/zlib
mkdir -p $file/openssl
mkdir -p $file/openssh
echo 联网通过wget下载安装包
cd $file
echo 开始下载zlib
wget $zlib
echo 开始下载openssl
wget --no-check-certificate $openssl
echo 开始下载openssh
wget --no-check-certificate $openssh
###安装相关依赖包###
yum install -y gcc make perl zlib zlib-devel pam pam-devel

echo 安装zlib
sleep 2s
tar -xzf zlib*.tar.gz -C $file/zlib 
sleep 2s
cd $file/zlib/zlib*
./configure --prefix=/usr/local/zlib && make && make install
ls -l /usr/local/zlib
cd ..
sleep 1s
clear
echo 配置zlib
grep  "/usr/local/zlib/lib"  /etc/ld.so.conf.d/zlib.conf ||  echo '/usr/local/zlib/lib' >> /etc/ld.so.conf.d/zlib.conf
ldconfig -v
sleep 1s
clear
echo 安装openssl
sleep 5s
mv -f /usr/bin/openssl /usr/bin/openssl.old
mv -f /usr/include/openssl /usr/include/openssl.old
mv -f /usr/lib64/openssl /usr/lib64/openssl.old
rm -rf /usr/local/ssl
cd $file
tar -xzf openssl*.tar.gz -C $file/openssl
cd $file/openssl/openssl*
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib && make && make install
cd ..
sleep 5s
clear
echo 配置openssl
sleep 5s
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
grep  "/usr/local/ssl/lib"  /etc/ld.so.conf.d/ssl.conf ||  echo '/usr/local/ssl/lib' >> /etc/ld.so.conf.d/ssl.conf
grep  "/usr/local/lib"  /etc/ld.so.conf.d/ssl.conf ||  echo '/usr/local/lib' >> /etc/ld.so.conf.d/ssl.conf
ldconfig -v
openssl version -a
sleep 5s
clear
echo 安装openssh
sleep 5s
rm -rf /etc/ssh
cd $file
tar -xzf openssh*.tar.gz -C $file/openssh
cd $file/openssh/openssh*
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl   --with-zlib --with-md5-passwords
make
sleep 5s
sudo chmod 600 /etc/ssh/ssh_host_rsa_key
sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key
sudo chmod 600 /etc/ssh/ssh_host_ed25519_key
make install
cd ..
pwd
sleep 5s
clear
echo 配置openssh
sleep 10s
echo "PasswordAuthentication yes"   >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo 'Banner /etc/issue' >> /etc/ssh/sshd_config
cp -p openssh-8.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
sudo chmod 600 /etc/ssh/ssh_host_rsa_key
sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key
sudo chmod 600 /etc/ssh/ssh_host_ed25519_key
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd
sleep 10s
clear
systemctl status sshd
if [ $? -eq 0 ]
then
	clear
	echo SSH安装并运行成功,开始关闭并禁用telnet
	sleep 1s
	systemctl stop telnet.socket &&  systemctl stop xinetd
	systemctl disable telnet.socket &&  systemctl disable xinetd
	sleep 1s
	echo 升级完成,安装ssh2扩展支持
	sleep 5s
	yum install libssh2 -y
	clear
	echo 安装进程结束
	sleep 5s
else
	echo SSH未成功安装或配置,安装进程即将退出,请检查日志……
	sleep 5s
fi

详细的脚本下载链接:https://download.csdn.net/download/sinat_20260363/71455575 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要升级CentOS 7的OpenSSH版本到8.8,可以按照以下步骤进行: 1. 安装EPEL存储库: ``` sudo yum install epel-release ``` 2. 安装OpenSSH 8.8: ``` sudo yum install openssh-server ``` 3. 启动OpenSSH服务: ``` sudo systemctl start sshd ``` 4. 验证OpenSSH版本: ``` ssh -V ``` 如果显示的版本为OpenSSH 8.8,则升级成功。 请注意,在升级OpenSSH之前,建议备份重要的配置文件和数据。升级过程可能会影响系统的稳定性和安全性。 ### 回答2: 在升级 CentOS 7 的 OpenSSH 之前,需要先确认系统版本。可以通过以下命令检查: ``` cat /etc/centos-release ``` 接下来,需要确保系统已经安装了 EPEL 软件源。如果未安装,可以通过以下命令安装: ``` yum install epel-release -y ``` 安装 EPEL 软件源后,就可以使用以下命令升级 OpenSSH: ``` yum --enablerepo=epel-testing install openssh -y ``` 执行这个命令之后,系统会自动下载和安装最新版本的 OpenSSH。安装完成后,可以使用以下命令确认版本: ``` ssh -V ``` 升级完成后,需要注意一些事项,例如备份现有 OpenSSH 配置文件等。新版本的 OpenSSH 可能会有一些不兼容的更新,需要进行配置调整。同时,也需要确保升级后的 OpenSSH 在安全性方面没有问题。建议仔细阅读系统日志和相关文档,以确保升级后系统的运行稳定和安全。 ### 回答3: CentOS 7是一款广受欢迎的服务器操作系统,由于其稳定性和可靠性被广泛使用。OpenSSH是一套免费开源的SSH协议的实现,可以通过加密通道来保证安全性,防止中间人攻击。然而,CentOS 7默认安装的OpenSSH版本较低,不能满足一些新功能和安全性需求。在这种情况下,用户可以选择将OpenSSH版本升级到8.8来增强安全性和性能。 以下是在CentOS 7上升级OpenSSH 8.8的步骤: 1. 安装OpenSSH编译工具 在升级过程中,需要使用OpenSSH编译工具,因此需要使用以下命令安装: sudo yum install gcc make pam-devel zlib-devel 2. 下载OpenSSH8.8 从OpenSSH官方网站上,下载最新OpenSSH 8.8版本: sudo wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz 3. 解压下载的文件 使用以下命令解压下载的文件: sudo tar -zxvf openssh-8.8p1.tar.gz 4. 编译和安装OpenSSH 接下来,需要编译OpenSSH,使用以下命令: cd openssh-8.8p1 sudo ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/lib64/openssl sudo make sudo make install 5. 禁用老版本的OpenSSH 现在,需要停止老版本的OpenSSH服务,并禁止其自动启动,使用以下命令: sudo systemctl stop sshd sudo systemctl disable sshd 6. 启用新版本的OpenSSH 接下来,需要启动新版本的OpenSSH服务,并确认其运行状态,使用以下命令: sudo systemctl start sshd sudo systemctl status sshd 7. 测试新版本的OpenSSH 现在,使用SSH客户端连接到服务器,并检查新版本的OpenSSH功能是否正常。如果所有步骤都执行正确,则应该成功升级OpenSSH 8.8。 总结 CentOS 7是一款功能强大的服务器操作系统,其默认安装的OpenSSH版本相对较低。通过按照上述步骤升级OpenSSH 8.8,可以提高安全性和性能,避免一些可能的安全隐患。为了确保成功升级,请务必逐步执行上述步骤,检查每个命令的输出和状态,并测试新版本的OpenSSH是否正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值