查看當前的版本
[root@myoracle ~]#ssh -V
相關安裝包下載地址
openssh下載地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssl下載地址:https://www.openssl.org/source/zlib下載地址:http://www.zlib.net/
今天演示從7.4升級到9.9,其他的大家可以自行替換安裝包和腳本中的名稱即可。
一、腳本內容:
#!/bin/bash
# OpenSSH 離線升級一鍵腳本(v9.9p1)# 檢查執行權限
if [[ "$(whoami)" != "root" ]]; thenecho -e "\033[31m錯誤:必須使用 root 用戶執行此腳本!\033[0m" >&2exit 1
fi# 環境檢查
check_environment() {echo -e "\n\033[34m[1/7] 正在檢查系統環境...\033[0m"if ! grep -q "CentOS Linux 7.9" /etc/redhat-release; thenecho -e "\033[31m錯誤:僅支持 CentOS 7 操作系統!\033[0m"# exit 1fiif [ "$(uname -m)" != "x86_64" ]; thenecho -e "\033[31m錯誤:僅支持 64 位系統!\033[0m"exit 1fiecho -e "\033[32m環境檢查通過\033[0m"
}# 安裝依賴包
install_dependencies() {echo -e "\n\033[34m[3/7] 安裝基礎依賴...\033[0m"cd /opttar -xvf yilai.tar.gzcd yilairpm -ivh *.rpm --nodeps --forceecho -e "\033[32m依賴包安裝完成\033[0m"
}# 編譯安裝 zlib
build_zlib() {echo -e "\n\033[34m[4/7] 編譯安裝 zlib...\033[0m"cd /opttar -xvf zlib-1.3.1.tar.gzcd zlib-1.3.1./configure --prefix=/usr/local/zlibmake && make installecho '/usr/local/zlib/lib' >> /etc/ld.so.confldconfig -v
}# 編譯安裝 OpenSSL
build_openssl() {echo -e "\n\033[34m[5/7] 編譯安裝 OpenSSL...\033[0m"cd /opttar -xvf openssl-1.1.1o.tar.gzcd openssl-1.1.1o./config --prefix=/usr/local/ssl -d sharedmake && make installecho '/usr/local/ssl/lib' >> /etc/ld.so.confldconfig -v
}# 安裝 OpenSSH
install_openssh() {echo -e "\n\033[34m[6/7] 升級 OpenSSH 到 v9.9p1...\033[0m"# 卸載舊版本rpm -e --nodeps openssh-server openssh openssh-clients 2>/dev/null# 編譯安裝cd /opttar -xvf openssh-9.9p1.tar.gzcd openssh-9.9p1./configure --prefix=/usr/local/openssh \--with-zlib=/usr/local/zlib \--with-ssl-dir=/usr/local/sslmake && make install# 配置文件echo 'PermitRootLogin yes' >> /usr/local/openssh/etc/sshd_configecho 'PubkeyAuthentication yes' >> /usr/local/openssh/etc/sshd_configecho 'PasswordAuthentication yes' >> /usr/local/openssh/etc/sshd_configcp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_configecho 'HostKeyAlgorithms ssh-rsa,ssh-dss ' >> /etc/ssh/sshd_config# 替換系統命令(修復關鍵點)if [ -f /usr/sbin/sshd ]; thenmv /usr/sbin/sshd /usr/sbin/sshd.bakficp -f /usr/local/openssh/sbin/sshd /usr/sbin/sshd # 使用新編譯的二進制文件# 修復權限chmod 755 /usr/sbin/sshdcp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen# 復制 ssh 命令cp /usr/local/openssh/bin/ssh /usr/bin/sshchmod 755 /usr/bin/ssh# 啟動腳本cp -p contrib/redhat/sshd.init /etc/init.d/sshdchmod +x /etc/init.d/sshdchkconfig --add sshdchkconfig sshd on
}# 最終驗證
final_check() {echo -e "\n\033[34m[7/7] 執行最終檢查...\033[0m"systemctl daemon-reloadsystemctl restart sshdssh -V 2>&1 | grep -q "OpenSSH_9.9p1"if [ $? -eq 0 ]; thenecho -e "\033[32m升級成功!當前SSH版本:$(ssh -V 2>&1)\033[0m"echo -e "\033[33m警告:請通過新SSH端口連接確認無誤后,再關閉Telnet服務!\033[0m"elseecho -e "\033[31m錯誤:升級失敗,請檢查日志!\033[0m"exit 1fi
}# 主執行流程
main() {check_environmentinstall_dependenciesbuild_zlibbuild_opensslinstall_opensshfinal_check
}# 執行主函數
main
二、使用說明
文件準備
將以下文件放在 /opt 目錄:
/opt/
├── yilai.tar.gz # 包含所有依賴的RPM包
├── openssh-9.9p1.tar.gz
├── openssl-1.1.1o.tar.gz
├── zlib-1.3.1.tar.gz
將以上腳本編寫為upgrade_openssh.sh
賦予權限執行即可。
[root@myoracle ~]#chmod +x upgrade_openssh.sh
[root@myoracle ~]#./upgrade_openssh.sh
驗證升級
[root@myoracle ~]#ssh -V # 應顯示 "OpenSSH_9.9p1"
[root@myoracle ~]#systemctl status sshd
重啟驗證
[root@myoracle ~]#reboot
三、離線安裝包
通過網盤分享的文件:openssh
鏈接: https://pan.baidu.com/s/1_Y2X293ZBDf3DssrO_oUTw
提取碼: cr33