echo "##################################开始升级Openssh##################################################################################"
##ssh变量----------------------------------------
sshnumber='9.9p2'
sshnumber1=`ssh -V 2>&1 | cut -d, -f1 | awk -F "[_]" '{print $2}'` #获取数字版本号,如${sshnumber}
sshnumber2=`ssh -V 2>&1 |awk '{print $1}'` #当前版本信息,如openssh-${sshnumber}p1
if [ $sshnumber1 = "${sshnumber}" ];then
echo "$sshnumber2 已是安全版本跳过升级"
else
echo "##################################配置备份#################################################################################"
#备份ssh配置文件----------------------------------------
mkdir -p /tmp/ssh_$times/ssh_config
cp -a /etc/ssh/ssh* /tmp/ssh_$times/ssh_config/
sleep 1
#备份ssh启动文件----------------------------------------
mkdir -p /tmp/ssh_$times/ssh-init
mkdir -p /tmp/ssh_$times/sshd.service_backup
cp -a /usr/lib/systemd/system/sshd.service /tmp/ssh_$times/sshd.service_backup
sleep 1
#备份ssh 认证模块----------------------------------------
mkdir -p /tmp/ssh_$times/ssh-pam
cp -a /etc/pam.d/sshd /tmp/ssh_$times/ssh-pam
sleep 1
#编译安装openssh
echo "##################################开始编译安装openssh###################################################################"
#外部下载源
# wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/penssh-9.9p2.tar.gz
tar -xf openssh-${sshnumber}.tar.gz -C /opt/
if [ $? != 0 ];then
echo -e "\n\e[31m 【退出部署,请确认openssh包是否准备好!!!】 \e[0m\n"
exit 1
else
#卸载openssh
echo "##################################开始卸载openssh#######################################################################"
rpm -e `rpm -qa | grep openssh` --nodeps
#编译openssh
echo "##################################开始编译openssh#######################################################################"
chown -R root.root /opt/openssh-${sshnumber}/
cd /opt/openssh-${sshnumber}/
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam
make && make install
#检查编译是否成功
echo $?
echo "##################################返回0 表示编译成功###################################################################"
sleep 1
fi
#配置还原
echo "##################################开始配置重置#########################################################################"
sleep 1
mv /etc/ssh/sshd_config /etc/ssh/sshd_config_$times
mv /etc/ssh/ssh_config /etc/ssh/ssh_config_$times
cp -a /tmp/ssh_$times/ssh_config/sshd_config /etc/ssh
cp -a /tmp/ssh_$times/ssh_config/ssh_config /etc/ssh
cp -a /tmp/ssh_$times/sshd.service_backup/sshd.service /usr/lib/systemd/system
cp -a /opt/openssh-${sshnumber}/contrib/redhat/sshd.init /etc/init.d/sshd
cp -a /opt/openssh-${sshnumber}/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
cp -a /tmp/ssh_$times/ssh-pam/sshd /etc/pam.d
sed -i '/#PermitRootLogin yes/c PermitRootLogin yes' /etc/ssh/sshd_config
sed -i '/GSSAPIAuthentication/c #GSSAPIAuthentication' /etc/ssh/sshd_config
sed -i '/GSSAPICleanupCredentials/c #GSSAPICleanupCredentials' /etc/ssh/sshd_config
sed -i '/#PubkeyAuthentication yes/c PubkeyAuthentication yes' /etc/ssh/sshd_config
#解决vsftp 文件传输问题报错问题
sed -i 's|/usr/libexec/openssh/sftp-server|/usr/libexec/sftp-server|g' /etc/ssh/sshd_config
#修改/etc/ssh ssh_host_*_key 文件权限
ls /etc/ssh | grep -v pub | egrep "dsa|ecdsa|ed25519" | xargs -I {} chmod 600 /etc/ssh/{}
chmod +x /etc/init.d/sshd
#开机启动配置
echo "##################################开始配置开机启动项###################################################################"
sleep 1
systemctl enable sshd
systemctl daemon-reload
systemctl restart sshd
systemctl status sshd