Centos7 升级openssl-1.1.1s及openssh-9.1p1(附脚本)

2023-10-31

主要是上个月openssl出现了漏洞,因此要对服务器的进行升级。建议如果没问题还是尽量别升级。主要步骤是2,脚本内容也只包含升级。1和3是开启和关闭telnet,不建议使用telnet。

1 安装和启动telnet

实际中我没使用telnet,开启有一定的风险。
建议服务器的快照创建实例测试先,可以多开几个ssh远程连接,这样一般问题也不大。

1.1 安装xinetd/telnet-server/vsftpd
yum -y install xinetd
yum -y install telnet-server
yum -y install vsftpd
1.2 修改配置文件vim /etc/xinetd.d/telnet 将disable = yes 改为disable = no
flags = REUSE
socket_type = stream        
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
#disable = yes
disable = no
1.3 启动并设置开机自启动
service xinetd restart
service vsftpd restart
systemctl start telnet.socket && systemctl enable telnet.socket
1.4 如果有防火墙,则需要放行23端口(阿里云放行)
firewall-cmd --zone=public --add-port=23/tcp --permanent
1.5 使用 telnet 连接服务器时,默认是不允许使用root登陆的,需创建一个用户并赋予sudo权限(若已有用户且有sudo权限可跳过)
# 添加用户并设置密码(centos7为用户名,密码ruijie123,>可修改)
useradd centos7
echo ruijie123 | passwd --stdin centos7
# 增加centos7账号的sudo权限
# 在配置文件 /etc/sudoers 中添加配置,但该文件默认是没>有写权限的,因此需要先增加写权限
chmod u+w /etc/sudoers
vi /etc/sudoers
centos7 ALL=(ALL) ALL
1.6 windows下的终端中使用telnet命令来测试连接(端口默认23)
telnet ip地址 23
2 执行openssh及openssl编译更新
务必多开几个ssh远程连接!!!!!!防止中间意外断开!!!!!!
2.1 将脚本文件及三个下载的压缩包放到opt目录下(同个目录即可),执行脚本,完成安装

进行脚本文件,脚本文件在4,其他三个压缩包自己下载就好了,也可也不下载,脚本会自动下载。

sh upopenssh.sh

升级失败就备份好配置,直接使用yum重装自带的ssh,确认好配置。

确认是开机自启动
chkconfig --list sshd
# sshd   0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭 
3 关闭telnet,openssh测试正常后删除(若使用telnet,务必关闭)
3.1 关闭telnet及防火墙23端口
service xinetd stop && service vsftpd stop
systemctl stop telnet.socket && systemctl disable telnet.socket
firewall-cmd --remove-port=23/tcp  --permanent 
##### 3.2 卸载telnet
rpm -e telnet-server
3.3 若之前无配置用户则不需要(非必要)
# 删除用户
userdel -r centos7
# 编辑sudo配置文件,去除对应配置段
vi /etc/sudoers
# 恢复sudo配置文件的权限
chmod u-w /etc/sudoers
4 upopenssh.sh 脚本

注意这里的openssl不能用3.0的,3.0需要的依赖是不一样的,会报错;1.x的版本应该都是可以的。
都有做备份处理,升级编译过程失败会还原,不过这个还原效果只是手动测试过,没有实际验证,我都成功了。
ssh配置是保留的,有些地方还需要你们自行修改。

脚本来源Linux OpenSSH-9.0p1最新版升级步骤详细(附脚本)
我自己做了修改,主要就是保留配置和多加一些失败操作的处理。

#!/bin/bash
#
#########################################################
# Function :openssh-9.1p1 and openssl 1.1.1s update     #
# Platform :Centos7.X                                   #
# Version  :1.0                                         #
# Date     :2022-12-12                                  #     
#########################################################
echo ------------------------------------------
echo  openssh-9.1p1 and openssl 1.1.1s update
echo ------------------------------------------
sleep 2
clear
export LANG="en_US.UTF-8"

#版本号(目前最新)
zlib_version="zlib-1.2.13"
openssl_version="openssl-1.1.1s"
openssh_version="openssh-9.1p1"

#安装包地址
file="/opt"

#默认编译路径
default="/usr/local" 
date_time=`date +%Y-%m-%d—%H:%M`

#安装目录
file_install="$file/openssh_install"
file_backup="$file/openssh_backup"
file_log="$file/openssh_log"

#源码包链接
zlib_download="https://www.zlib.net/$zlib_version.tar.gz"
openssl_download="https://www.openssl.org/source/$openssl_version.tar.gz"
openssh_download="https://mirrors.aliyun.com/openssh/portable/$openssh_version.tar.gz"


Install_make() {
	echo 安装进程开始
	sleep 1s
	clear
	Check if user is root
	if [ $(id -u) != "0" ];then
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 当前用户为普通用户,必须使用root用户运行,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 3
		exit
	 fi

	# Check telnet server is enable
	# 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
	# 	echo $(date +%F-%T)  检测到telnet服务并启动…… >> update.log
	# 	sleep 2
	# else
	# 	echo -e " 请务必启动telnet服务后运行脚本(防止更新失败),脚本退出中......" "\033[31m Error\033[0m"
	# 	sleep 3
	# 	exit
	# fi

	#判断是否安装wget
	echo -e "\033[33m 正在安装Wget...... \033[0m"
	sleep 2
	echo ""
		if ! type wget >/dev/null 2>&1;then
			yum install -y wget
		else
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
			echo -e " wget已经安装了:" "\033[32m Please continue\033[0m"
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
			echo ""
		fi

	#判断是否安装tar
	echo -e "\033[33m 正在安装TAR...... \033[0m"
	sleep 2
	echo ""
		if ! type tar >/dev/null 2>&1;then
			yum install -y tar
		else
			echo ""
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
				echo -e " tar已经安装了:" "\033[32m Please continue\033[0m"
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
			echo ""
		fi

	#安装相关依赖包
	echo -e "\033[33m 正在安装依赖包...... \033[0m"
	sleep 3
	echo ""
		yum -y install gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers
		if [ $? -eq 0 ];then
			echo ""
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
				echo -e " 安装软件依赖包成功 " "\033[32m Success\033[0m"
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
			else
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
				echo -e " 解压源码包失败,脚本退出中......" "\033[31m Error\033[0m"
			echo -e "\033[33m--------------------------------------------------------------- \033[0m"
			echo ""
			sleep 4
			exit
		fi
}


Install_backup() {
	#创建文件(可修改)
	mkdir -p $file_install
	mkdir -p $file_backup
	mkdir -p $file_log
	mkdir -p $file_backup/zlib
	mkdir -p $file_backup/ssl
	mkdir -p $file_backup/ssh
	mkdir -p $file_log/zlib
	mkdir -p $file_log/ssl
	mkdir -p $file_log/ssh

	#备份文件(可修改)
	cp -rf /usr/bin/openssl  $file_backup/ssl/openssl_$date_time.bak > /dev/null
	cp -rf /usr/include/openssl /usr/include/openssl.bak //这个有些场景不存在
	cp -rf /etc/ssh  $file_backup/ssh/ssh_$date_time.bak > /dev/null
	cp -rf /etc/pam.d/sshd.pam  $file_backup/ssh/sshd_$date_time.pam.bak > /dev/null
	cp -rf /etc/init.d/sshd  $file_backup/ssh/sshd_$date_time.bak > /dev/null
	cp -rf /usr/lib/systemd/system/sshd.service  $file_backup/ssh/sshd_$date_time.service.bak > /dev/null
}

Install_tar() {
	#下载的源码包,检查是否解压(可修改)
	#	if [ -e $file/$zlib_version.tar.gz ] && [ -e $file/$openssl_version.tar.gz ] && [ -e /$file/$openssh_version.tar.gz ];then
	#		echo -e " 下载软件源码包已存在  " "\033[32m  Please continue\033[0m"
	#	else
	#		echo -e "\033[33m 未发现本地源码包,链接检查获取中........... \033[0m "
	#	echo ""
	#	cd $file
	#	wget --no-check-certificate  $zlib_download
	#	wget --no-check-certificate  $openssl_download
	#	wget --no-check-certificate  $openssh_download
	#	echo ""
	#	fi
	#zlib
	echo -e "\033[33m 正在下载Zlib软件包...... \033[0m"
	sleep 3
	echo ""
	if [ -e $file/$zlib_version.tar.gz ];then
		echo -e " Zlib软件包已存在  " "\033[32m  Please continue\033[0m"
	else
		echo -e "\033[33m 未发现zlib本地源码包,链接检查获取中........... \033[0m "
		sleep 1
		echo ""
		cd $file
		wget --no-check-certificate  $zlib_download
		echo ""
	fi
	#openssl
	echo -e "\033[33m 正在下载Openssl软件包...... \033[0m"
	sleep 3
	echo ""
	if  [ -e $file/$openssl_version.tar.gz ];then
		echo -e " Openssl软件包已存在  " "\033[32m  Please continue\033[0m"
	else
		echo -e "\033[33m 未发现openssl本地源码包,链接检查获取中........... \033[0m "
		echo ""
		sleep 1
		cd $file
		wget --no-check-certificate  $openssl_download
		echo ""
	fi
	#openssh
	echo -e "\033[33m 正在下载Openssh软件包...... \033[0m"
	sleep 3
	echo ""
	if [ -e /$file/$openssh_version.tar.gz ];then
		echo -e " Openssh软件包已存在  " "\033[32m  Please continue\033[0m"
	else
		echo -e "\033[33m 未发现openssh本地源码包,链接检查获取中........... \033[0m "
		echo ""
		sleep 1
		cd $file
		wget --no-check-certificate  $openssh_download
	fi
}

echo ""
#安装zlib
Install_zlib() {
	echo -e "\033[33m 1.1-正在解压Zlib软件包...... \033[0m"
	sleep 3
	echo ""
	cd $file && mkdir -p $file_install && tar -xzf zlib*.tar.gz -C $file_install > /dev/null
	if [ -d $file_install/$zilb_version ];then
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  zilb解压源码包成功" "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  zilb解压源码包失败,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
		exit
	fi
	echo -e "\033[33m 1.2-正在编译安装Zlib服务.............. \033[0m"
	sleep 3
	echo ""
	cd $file_install/zlib*
	./configure --prefix=$default/$zlib_version > $file_log/zlib/zlib_configure_$date_time.txt  #> /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo -e "\033[33m make... \033[0m"
			make > /dev/null 2>&1
		echo $?
		echo -e "\033[33m make test... \033[0m"
			make test > /dev/null 2>&1
		echo $?
		echo -e "\033[33m make install... \033[0m"
			make install > /dev/null 2>&1
		echo $?
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  编译安装压缩库失败,脚本退出中..." "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
		exit
	fi

	if [ -e $default/$zlib_version/lib/libz.so ];then
		sed -i '/zlib/'d /etc/ld.so.conf
		echo "$default/$zlib_version/lib" >> /etc/ld.so.conf
		echo "$default/$zlib_version/lib" >> /etc/ld.so.conf.d/zlib.conf
		ldconfig -v > $file_log/zlib/zlib_ldconfig_$date_tim
		/sbin/ldconfig
	fi
}

echo ""
Install_openssl() {
	echo -e "\033[33m 2.1-正在解压Openssl...... \033[0m"
	sleep 3
	echo ""
	cd $file  &&  tar -xvzf openssl*.tar.gz -C $file_install > /dev/null
	if [ -d $file_install/$openssl_version ];then
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  OpenSSL解压源码包成功" "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  OpenSSL解压源码包失败,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
		exit
	fi
		echo ""
		echo -e "\033[33m 2.2-正在编译安装Openssl服务...... \033[0m"
		sleep 3
		echo ""
		cd $file_install/$openssl_version
		./config shared zlib --prefix=$default/$openssl_version >  $file_log/ssl/ssl_config_$date_time.txt  #> /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo -e "\033[33m make clean... \033[0m"
			make clean > /dev/null 2>&1
		echo $?
		echo -e "\033[33m make install... \033[0m"
			make install > /dev/null 2>&1
		echo $?
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  编译安装OpenSSL失败,脚本退出中..." "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
		exit
	fi

	mv /usr/bin/openssl /usr/bin/openssl_$date_time.bak #先备份
	mv /usr/include/openssl /usr/include/openssl_$date_time.bak #有些不存在
	if [ -e $default/$openssl_version/bin/openssl ];then
		sed -i '/openssl/'d /etc/ld.so.conf
		echo "$default/$openssl_version/lib" >> /etc/ld.so.conf
		ln -s $default/$openssl_version/bin/openssl /usr/bin/openssl
		ln -s $default/$openssl_version/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
		ln -s $default/$openssl_version/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
		ldconfig -v > $file_log/ssl/ssl_ldconfig_$date_time.txt > /dev/null 2>&1
		/sbin/ldconfig
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 编译安装OpenSSL " "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		echo -e "\033[33m 2.3-正在输出 OpenSSL 版本状态.............. \033[0m"
		sleep 3
		echo ""
		echo -e "\033[32m====================== OpenSSL veriosn =====================  \033[0m"
		echo ""
		openssl version -a
		echo ""
		echo -e "\033[32m=======================================================  \033[0m"
		sleep 2
	else
		echo ""
		echo -e "\033[33m 2.3.1-正在还原OpenSSL中...... \033[0m"
		rm -rf /usr/bin/openssl
		mv /usr/bin/openssl_$date_time.bak /usr/bin/openssl
		rm -rf /usr/include/openssl
		mv /usr/include/openssl_$date_time.bak /usr/include/openssl
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 还原成功 " "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		echo -e "\033[32m====================== OpenSSL veriosn =====================  \033[0m"
		openssl version
		echo ""
		sleep 3
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " OpenSSL软连接失败,脚本退出中..." "\033[31m  Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
		exit
	fi
}

echo ""
Install_openssh() {
	echo -e "\033[33m 3.1-正在解压OpenSSH...... \033[0m"
	sleep 3
	echo ""
	cd $file && tar -xvzf openssh*.tar.gz -C $file_install > /dev/null
	if [ -d $file_install/$openssh_version ];then
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  OpenSSh解压源码包成功" "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  OpenSSh解压源码包失败,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
	exit
	fi
	cp -rf /etc/ssh /etc/ssh_$date_time.bak #cp安装时,不会覆盖原配置
	echo ""
	echo -e "\033[33m 3.2-正在卸载OpenSSH服务...... \033[0m"
	sleep 3
	echo ""
	rpm -e --nodeps `rpm -qa | grep openssh`> /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 卸载OpenSSH服务成功" "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 2
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e "  卸载OpenSSH服务失败,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
	exit
	fi
	echo ""
	echo -e "\033[33m 3.3-正在编译安装OpenSSH服务...... \033[0m"
	sleep 3
	echo ""
	cd $file_install/$openssh_version
	./configure --prefix=$default/$openssh_version --sysconfdir=/etc/ssh --with-ssl-dir=$default/$openssl_version --with-zlib=$default/$zlib_version >  $file_log/ssh/ssh_configure_$date_time.txt   #> /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo -e "\033[33m make clean... \033[0m"
			make clean > /dev/null 2>&1
		echo $?
		echo -e "\033[33m make install... \033[0m"
			make install > /dev/null 2>&1
		echo $?
	else
		echo ""
		echo -e "\033[33m 3.3.1-正在重装OpenSSH中...... \033[0m"
		yum -y install openssh openssh-clients openssh-server
		# 还原配置
		rm -rf /etc/ssh
		mv /etc/ssh_$date_time.bak /etc/ssh
		# 修改密钥权限
		chmod 600 /etc/ssh/ssh_host_rsa_key
		chmod 600 /etc/ssh/ssh_host_dsa_key
		chmod 600 /etc/ssh/ssh_host_ecdsa_key
		chmod 600 /etc/ssh/ssh_host_ed25519_key
		# 启动
		systemctl start sshd
		echo ""
		echo -e "\033[33m 输出sshd服务状态: \033[33m"
		systemctl status sshd.service
		echo ""
		echo -e " 重装openssh版本信息:  "
		echo ""
		ssh -V
		sleep 1
		echo ""
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 重装成功,请确认配置后再重启ssh! " "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 3
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 编译安装OpenSSH失败,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 4
		exit
	fi
		
	echo ""
	echo -e "\033[33m--------------------------------------------------------------- \033[0m"
	echo -e " 编译安装OpenSSH " "\033[32m Success\033[0m"
	echo -e "\033[33m--------------------------------------------------------------- \033[0m"
	echo ""
	sleep 2
	echo -e "\033[32m==================== OpenSSH—file veriosn =================== \033[0m"
	echo ""
	/usr/local/$openssh_version/bin/ssh -V
	echo ""
	echo -e "\033[32m======================================================= \033[0m"
	sleep 3
	echo ""
	echo -e "\033[33m 3.4-正在迁移OpenSSH配置文件...... \033[0m"
	sleep 3
	echo ""
	# 还原配置
	rm -rf /etc/ssh
	mv /etc/ssh_$date_time.bak /etc/ssh
	#迁移sshd
	if [ -f  "/etc/init.d/sshd" ];then
		mv /etc/init.d/sshd /etc/init.d/sshd_$date_time.bak
	else
		echo -e " /etc/init.d/sshd不存在 " "\033[31m Not backed up(可忽略)\033[0m"
	fi
	cp -rf $file_install/$openssh_version/contrib/redhat/sshd.init /etc/init.d/sshd;
	chmod u+x /etc/init.d/sshd;
	chkconfig --add sshd      #自启动
	chkconfig --list |grep sshd;
	chkconfig sshd on

	#备份启动脚本,不一定有
	if [ -f  "/usr/lib/systemd/system/sshd.service" ];then
		mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_bak
	else
		echo -e " sshd.service不存在" "\033[31m Not backed up(可忽略)\033[0m"
	fi
	#备份复制sshd.pam文件
	if [ -f "/etc/pam.d/sshd.pam" ];then
		mv /etc/pam.d/sshd.pam /etc/pam.d/sshd.pam_$date_time.bak 
	else
		echo -e " sshd.pam不存在" "\033[31m Not backed up(可忽略)\033[0m"
	fi
	cp -rf $file_install/$openssh_version/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

	#还原配置ssh_config	
	# cp -rf $file_install/$openssh_version/sshd_config /etc/ssh/sshd_config
	sed -i 's/Subsystem/#Subsystem/g' /etc/ssh/sshd_config
	echo "Subsystem sftp $default/$openssh_version/libexec/sftp-server" >> /etc/ssh/sshd_config
	# sed -i 's/#PasswordAuthentication\ yes/PasswordAuthentication\ yes/g' /etc/ssh/sshd_config
	cp -rf $default/$openssh_version/sbin/sshd /usr/sbin/sshd
	cp -rf /$default/$openssh_version/bin/ssh /usr/bin/ssh
	cp -rf $default/$openssh_version/bin/ssh-keygen /usr/bin/ssh-keygen
	#grep -v "[[:space:]]*#" /etc/ssh/sshd_config  |grep "PubkeyAuthentication yes"
	# echo 'PermitRootLogin no' >> /etc/ssh/sshd_config

	# 修改秘钥的权限
	chmod 600 /etc/ssh/ssh_host_rsa_key
	chmod 600 /etc/ssh/ssh_host_dsa_key
	chmod 600 /etc/ssh/ssh_host_ecdsa_key
	chmod 600 /etc/ssh/ssh_host_ed25519_key

	#重启sshd
	service sshd start > /dev/null 2>&1
	if [ $? -eq 0 ];then
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 启动OpenSSH服务成功" "\033[32m Success\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo ""
		sleep 2
		#删除源码包(可修改)
		# rm -rf $file/*$zlib_version.tar.gz
		# rm -rf $file/*$openssl_version.tar.gz
		# rm -rf $file/*$openssh_version.tar.gz
		#rm -rf $file_install
		echo -e "\033[33m 3.5-正在输出 OpenSSH 版本...... \033[0m"
		sleep 3
		echo ""
		echo -e "\033[32m==================== OpenSSH veriosn =================== \033[0m"
		echo ""
		ssh -V
		echo ""
		echo -e "\033[32m======================================================== \033[0m"
	else
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		echo -e " 启动OpenSSH服务失败,脚本退出中......" "\033[31m Error\033[0m"
		echo -e "\033[33m--------------------------------------------------------------- \033[0m"
		sleep 4
		exit
	fi
	echo ""
}

End_install() {
	##sshd状态
	echo ""
	echo -e "\033[33m 输出sshd服务状态: \033[33m"
	sleep 2
	echo ""
	systemctl status sshd.service
	echo ""
	echo ""
	echo ""
	sleep 1
		
	echo -e "\033[33m==================== OpenSSH file =================== \033[0m"
	echo ""
	echo -e " 当前openssh版本信息:  "
	echo ""
	ssh -V
	echo ""
	echo -e " 当前openssl版本信息:  "
	echo ""
	openssl version
	echo ""
	echo -e " Openssh升级备份目录:  " 
	cd  $file_backup && pwd
	cd ~
	echo ""
	echo -e " 升级日志目录请前往:  "
	cd  $file_log && pwd
	cd ~
	echo ""
	echo -e "\033[33m======================================================= \033[0m"
}


Install_make
Install_backup
Install_tar
Install_zlib
Install_openssl
Install_openssh
End_install
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Centos7 升级openssl-1.1.1s及openssh-9.1p1(附脚本) 的相关文章

  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a

随机推荐

  • UE4(unreal engine4)蒙太奇动画删除不想要的帧数

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 问题原因 二 具体操作步骤 前言 UE4 unreal engine4 蒙太奇动画删除不想要的帧数 当我们在UE4中导入一个fbx骨骼动画 当我们想要截取动画中某些不想用的帧时 点
  • 软件版本号命名规范_产品版本命名的规范与规则

    上一篇文章我们对产品的版本迭代的方法进行了一些总结 本篇文章我会针对产品的版本命名 验收 发布这三个层面 来总结一下我自己的想法 希望能对大家有所帮助 01 产品版本命名的规范与规则 1 1 版本命名规范 软件版本号由主版本号 次版本号 修
  • springboot后台获取不到前台Vue日期问题解决

    一 实体类字段写法如下 JsonFormat pattern yyyy MM dd timezone GMT 8 private Date sendTime Vue使用element ui写法
  • 4.2、Flink任务怎样读取文件中的数据

    目录 1 前言 2 readTextFile 已过时 不推荐使用 3 readFile 已过时 不推荐使用 4 fromSource FileSource 推荐使用 1 前言 思考 读取文件时可以设置哪些规则呢 1 文件的格式 txt cs
  • (二)程序语言设计基础

    目录 1 程序设计语言概述 1 1 基本概念 1 1 1 低级语言和高级语言 1 1 2 编译程序和解释程序 1 1 3 程序设计语言的定义 1 1 4 程序设计语言的分类 1 2 程序设计语言的基本成分 1 2 1 数据成分 1 2 2
  • 2022最新android设备uuid、udid使用教程​

    前言 udid UDID是Unique Device Identifier的缩写 中文意思是设备唯一标识 uuid UUID是Universally Unique Identifier的缩写 中文意思是通用唯一识别码 简言之 udid对应某
  • elasticsearch 中text与keyword的区别

    创建索引 PUT ellis mappings properties name type text fields keyword type keyword ignore above 256 age type long 我们可以看到name类
  • VBA常用语法

    最近接触了一下VBA编程 才知道Excel还能编程 而且还如此强大 真的是惊呆了 话不多说 先了解一下VBA常用的语法吧 1 基础语法 高级for循环 Function deleteArrayByIndex list As String D
  • oracle获取随机记录

    oracle获取随机记录 select from select from ford car order by dbms random value where rownum lt 1001
  • 【vision transformer】DETR原理及代码详解(三)

    transformer 端到端目标检测DETR项目实践及代码详解 Paddle Detr git PaddleViT object detection DETR at develop BR IDL PaddleViT GitHub 数据集及
  • Redis SDS简单动态字符串

    结构体定义 本质上说就是用C语言来实现基本的面向对象 来对底层的字符串进行表示 方便上层使用 为调用者减少负担 typedef char sds struct sdshdr int len int free char buf 举例常用操作
  • 搭建JMeter分布式测试环境

    分布式测试概述 现在我们来了解如何使用多台机器来执行压力测试 也就是所谓的分布式测试 当我们模拟大量的并发虚拟用户时 比如我们要起10万 100万甚至更多的并发用户时 一台负载机器可能就满足不了我们需要的用户量 此时 就需要使用多台主机搭建
  • Git入门--自定义标签

    忽略特殊文件 忽略某些文件时 需要编写 gitignore gitignore文件本身要放到版本库里 并且可以对 gitignore做版本管理 配置别名 git config global alias co checkout 用co来代替c
  • FFmpeg源码分析:av_register_all()注册封装器与解封装器

    FFmpeg中av register all 函数用于注册所有muxers demuxers与protocols FFmpeg4 0以前是用链表存储muxer demuxer FFmpeg4 0以后改为数组存储 并且av register
  • SPP原理和代码

    空间金字塔池化 Spatial Pyramid Pooling SPP 原理和代码实现 Pytorch 一 为什么需要SPP 首先需要知道为什么需要SPP 我们都知道卷积神经网络 CNN 由卷积层和全连接层组成 其中卷积层对于输入数据的大小
  • 众享比特董事长严挺:数字藏品在国内有三大发展趋势

    2022年11月2日 巴比特主办的温州元宇宙月系列活动之 数字藏品 虚拟人 元宇宙营销新策略 论坛在温州召开 众享比特董事长严挺 众享链网发起人严挺出席论坛并进行主题为 元宇宙在国内落地的一些实践分享 的演讲 温州元宇宙主题月秉承 拥抱数字
  • Hyperledger fabric2.4 搭建自己的网络

    1 使用cryptogen工具生成证书 1 1 将fabric samples bin目录下的二进制文件复制到 usr local bin目录 以便全局使用这些命令 cd fabric samples bin cp usr local bi
  • 那些你可能遇到的 Linux 命令?什么,你还不知道?赶紧收藏?完善中!

    文章目录 一 Linux 进程 1 通过进程名查找进程号 1 1 ps aux ps ef diff 1 2 ps aux ps aux 什么 它们不一样 1 3 grep awk 取出进程号 取出进程号并 Kill 2 通过进程号查看进程
  • LINUX应用和驱动交互的四种方式

    Linux开发中 应用读取数据时往往会遇到驱动尚未获得有效数据的情况 所以需要采用适合的同步方式 1 非阻塞方式 非阻塞方式 顾名思义就是不管数据是否准备好 驱动都会返回结果 采用这种方式就需要应用不停地重复查询 查询硬件的线程就会一直都占
  • Centos7 升级openssl-1.1.1s及openssh-9.1p1(附脚本)

    主要是上个月openssl出现了漏洞 因此要对服务器的进行升级 建议如果没问题还是尽量别升级 主要步骤是2 脚本内容也只包含升级 1和3是开启和关闭telnet 不建议使用telnet 1 安装和启动telnet 实际中我没使用telnet