CentOS7編譯安裝升級openssh8.7p1


因生成環境服務器安全掃描出的漏洞問題,只能升級最新的openssh,適用於centos6和centos7的升級使用。

 

一、編譯前工作

 

openssl版本要求1.0.1以上,zlib版本要求1.1.4以上

備份原先ssh配置文件

cp /usr/bin/ssh /usr/bin/ssh_bak cp /usr/sbin/sshd /usr/sbin/sshd_bak cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak cp /etc/init.d/sshd /etc/init.d/sshd_bak

下載openssh的官網地址

https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

 

二、編輯安裝openssh

 

openssh編譯參數簡述

--prefix=PREFIX        #安裝到哪個路徑,默認[/usr/local]
--sysconfdir=DIR        #配置路徑,默認[PREFIX/etc] --mandir=DIR #幫助文檔路徑 --with-md5-passwords #開啟使用MD5的密碼 --with-zlib=PATH #指定zlib的安裝路徑 --with-ssl-dir=PATH #指定openssl的安裝路徑
tar zxf openssh-8.7p1.tar.gz cd openssh-8.7p1 ./configure --prefix=/usr/local/openssh-8.7p1/ --sysconfdir=/etc/ssh/ --with-md5-passwords --mandir=/usr/share/man make -j 4 && make install 

刪除舊的ssh命令

rm -f /usr/libexec/openssh/sftp-server rm -f /usr/bin/ssh-copy-id rm -f /usr/bin/ssh-add rm -f /usr/bin/ssh-agent rm -f /usr/bin/ssh-keygen rm -f /usr/bin/ssh-keyscan rm -f /usr/bin/scp rm -f /usr/bin/sftp rm -f /usr/bin/ssh rm -f /usr/sbin/sshd

替換新的ssh命令和常用工具,常用工具都在解壓包內復制到系統路徑下。

cp -p sftp-server  /usr/libexec/openssh/
cp contrib/ssh-copy-id /usr/bin/ssh-copy-id cp -p /usr/local/openssh-8.7p1/bin/* /usr/bin cp -p /usr/local/openssh-8.7p1/sbin/* /usr/sbin

設置權限

chmod -R 755 /usr/local/openssh-8.7p1/ chmod -R 755 /usr/bin/ssh* chmod -R 755 /usr/bin/scp chmod -R 755 /usr/bin/sftp chmod -R 755 /usr/sbin/ssh*

復制SSH的啟動腳本和設置開機自啟

cp -p contrib/redhat/sshd.init /etc/init.d/sshd chmod +x /etc/init.d/sshd chown root.root /etc/init.d/sshd chkconfig --add sshd

SSH重啟之前可以先測試配置文件是否有問題,防止重啟SSH失敗,遠程連接斷了,如果是本地終端連接可以直接重啟

/usr/local/openssh-8.7p1/sbin/sshd -t -f /etc/ssh/sshd_config

前面如果沒有報錯就可以重啟SSH了

/etc/init.d/sshd restart

三、特別說明

centos7可能會因為/usr/lib/systemd/system/sshd.service文件而導致重啟失敗,因此寫了if簡單判斷下

if [ -f /usr/lib/systemd/system/sshd.service ];then cat >/usr/lib/systemd/system/sshd.service <<-EOF [Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target [Service] ExecStart=/usr/sbin/sshd [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl restart sshd || /usr/local/openssh-8.7p1/sbin/sshd else /etc/init.d/sshd restart || /usr/local/openssh-8.7p1/sbin/sshd fi

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM