一、臨時開啟telnet登錄方式,避免升級失敗無法登錄系統
(注意telnet登錄方式存在安全隱患,升級openssh相關服務后要記得關閉)
?
1.安裝telnet服務
yum -y install xinetd telnet*
?
2.允許root用戶通過telnet登陸,編輯文件注釋掉下面這行:
vim /etc/pam.d/login
#auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
?
3.備份配置文件/etc/securetty
cp /etc/securetty /etc/securetty.bak
?
4.添加超級用戶登陸設備至/etc/securetty文件:
echo "pts/1" >> /etc/securetty
echo "pts/2" >> /etc/securetty
echo "pts/3" >> /etc/securetty
echo "pts/4" >> /etc/securetty
echo "pts/5" >> /etc/securetty
echo "pts/6" >> /etc/securetty
echo "pts/7" >> /etc/securetty
echo "pts/8" >> /etc/securetty
echo "pts/9" >> /etc/securetty
echo "pts/10" >> /etc/securetty
?
5.開啟root用戶遠程登陸,編輯文件注釋掉下面這行:
vim /etc/pam.d/remote
#auth required pam_securetty.so
?
6.創建 Telnet 的 xinetd 配置文件,使用下面的命令創建并編輯/etc/xinetd.d/telnet文件:
vim /etc/xinetd.d/telnet
?
在文件中添加以下內容:
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
? ? ? ? flags ? ? ? ? ? = REUSE
? ? ? ? socket_type ? ? = stream
? ? ? ? wait ? ? ? ? ? ?= no
? ? ? ? user ? ? ? ? ? ?= root
? ? ? ? server ? ? ? ? ?= /usr/sbin/in.telnetd
? ? ? ? log_on_failure ?+= USERID
? ? ? ? disable ? ? ? ? = no
}
?
編輯完成后,保存并退出。
?
7.防火墻規則放行telnet默認端口23
firewall-cmd --add-port=23/tcp --zone=public --permanent
firewall-cmd --reload
?
8.啟動 xinetd 服務
systemctl start xinetd
?
9.如果要禁用telnet服務,執行如下操作:
#停止telnet服務
systemctl stop xinetd
systemctl disable xinetd
systemctl stop telnet.socket
#防火墻禁用端口
firewall-cmd --remove-port=23/tcp --zone=public --permanent
firewall-cmd --reload
?
#編輯配置文件,恢復注釋過的配置項:
vim /etc/pam.d/login
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
?
?
vim /etc/pam.d/remote
auth required pam_securetty.so
?
二、編譯安裝 OpenSSL 1.1.1t(全新安裝)
1.下載依賴
yum install -y gcc make perl zlib-devel
2.在進行升級操作之前,對現有的 OpenSSL 和 OpenSSH 配置文件進行備份,防止升級過程中出現問題導致配置丟失。
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
3.下載并解壓(路徑根據實際情況修改)
mkdir -p /root/soft && cd /root/soft
wget -O openssl-1.1.1t.tar.gz https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar -xzf openssl-1.1.1t.tar.gz
?
4.配置編譯
cd openssl-1.1.1t
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
?
5.編譯安裝
make -j$(nproc)?
make install?
?
6.驗證安裝結果
ls -l /usr/local/openssl/{lib,include/openssl}
# 必須存在以下文件:
lib/libssl.so.1.1
lib/libcrypto.so.1.1
?
7. 配置系統環境變量,讓系統能夠找到新安裝的 OpenSSL 庫
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig
8. 處理 SSH 配置文件過時的選項,編輯 /etc/ssh/sshd_config 文件,注釋掉不支持的選項。
vi /etc/ssh/sshd_config
?
在文件中找到以下幾行,在行首添加 # 進行注釋:
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
#UsePAM yes
?
保存并退出文件。
9. 修正 SSH 主機密鑰文件權限,將 SSH 主機密鑰文件權限修改為 600,確保只有文件所有者可讀寫。
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
三、編譯 OpenSSH 9.9p1(綁定 OpenSSL 1.1.1t)
1:下載安裝包和編譯
cd /root/soft
wget -O openssh-9.9p1.tar.gz ?https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz
tar -xzf openssh-9.9p1.tar.gz
cd /root/soft/openssh-9.9p2
?
#編譯安裝文件
./configure --with-ssl-dir=/usr/local/openssl --with-zlib --sysconfdir=/etc/ssh
?
2.編譯安裝(含動態鏈接修復)
make -j$(nproc) && make install
?
# 永久生效動態鏈接(避免重啟失效)
echo '/usr/local/openssl-1.1.1t/lib' >> /etc/ld.so.conf.d/openssl-1.1.conf
# 驗證 libssl.so.1.1 路徑
ldconfig -v?
?
3. 配置 SSH 服務,將原有的 SSH 服務配置文件替換為新安裝的 OpenSSH 提供的配置文件,并設置權限。
cp -f contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
4 啟動 SSH 服務,啟動 SSH 服務并設置為開機自啟。
systemctl start sshd
systemctl enable sshd
?
5. 驗證版本,驗證 OpenSSL 和 OpenSSH 是否成功升級到指定版本。
/usr/local/openssl/bin/openssl version
ssh -V
?
6. 驗證 SSH 服務,檢查 SSH 服務是否正常運行。
systemctl status sshd
?最后要記得,按照前面步驟禁用telnet登錄方式。