對(duì)于解決openssh漏洞,最好的辦法就是升級(jí),本文以openssh9.2為例,升級(jí)方法都一樣,主要區(qū)別在于不同openssh版本需要依賴包的版本不一樣。
1準(zhǔn)備:
我的現(xiàn)在版本:
zlib:zlib-1.2.7-18
perl:perl5 (revision 5 version 16 subversion 3)
pam:pam-1.1.8-22
openssl:openssl-1.0.2k-19
openssh:openssh-7.4p1-21
依賴包下載:zlib、perl、pam、openssl、openssh,升級(jí)openssl期間可能會(huì)報(bào)錯(cuò)。
沒有vnc后臺(tái)登錄的,需要開啟telnet服務(wù)防止萬(wàn)一,最好ftp服務(wù)也開下。
附上包下載地址
zlib-1.2.13.tar.gz:https://www.zlib.net/
perl-5.16.1.tar.gz:http://www.cpan.org/src/5.0/
openssl-1.1.1t.tar.gz:https://www.openssl.org/source/
Linux-PAM-1.3.1.tar.xz:https://www.linuxfromscratch.org/blfs/view/9.0/postlfs/linux-pam.html
openssh:Index of /pub/OpenBSD/OpenSSH/portable/
xinetd-2.3.15-14.el7.x86_64、telnet-0.17-65.el7_8.x86_64、telnet-server-0.17-65.el7_8.x86_64、vsftpd-3.0.2-28.el7.x86_64.rpm:http://www.rpmfind.net/linux/rpm2html/search.php
2.開啟telnet服務(wù)
rpm -ivh??xinetd-2.3.15-14.el7.x86_64
rpm -ivh??elnet-0.17-65.el7_8.x86_64
rpm -ivh??telnet-server-0.17-65.el7_8.x86_64
修改/etc/xinetd.d/telnet的disable= no,沒有創(chuàng)建一個(gè)
service telnet
{
? ? flags=REUSE
? ? socket_type=stream
? ? wait=no
? ? user=root
? ? server=/usr/sbin/in.telnetd
? ? log_on_failure += USERID
? ? disable= no
}
啟動(dòng)服務(wù)
service xinetd restart / systemctl restart xinetd.service
systemctl start telnet.socket
ss -ntl | grep 23
這時(shí)使用root登錄可能出現(xiàn)Login incorrect,查看/var/log/secure
在/etc/securetty中加入對(duì)應(yīng)的模擬終端,如pts/1
3.依賴包安裝,我的沒有升級(jí)perl、pam
zlib安裝:
tar -xzvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure --prefix=/usr/local/zlib
make && make install
perl安裝:
tar -xzf perl-5.16.1.tar.gz
cd perl-5.16.1
./Configure -de ? 缺省配置
make && make install
perl -v
pam安裝:
tar -xf Linux-PAM-1.3.1.tar.xz
cd Linux-PAM-1.3.1
./configure?
make && make install
openssl安裝:
openssl version -a
tar -zxvf ?openssl-1.1.1t.tar.gz
mkdir ?-p ?/usr/bak/lib64? ? ? ? 恢復(fù)版本需要
cp -ar ?/usr/lib64/* ? ?/usr/bak/lib64? ? ?恢復(fù)版本需要
cd openssl-1.1.1t
./config --prefix=/usr/local/ssl ?
make && make install
cp -a ?/usr/bin/openssl ? /usr/bin/openssl.bak ??
for i in $(rpm -qa | grep openssl);do rpm -e $i --nodeps ;done 卸載原包
ln -s /usr/local/ssl/bin/openssl ?/usr/bin/openssl
ln -s /usr/local/ssl/lib/libssl.so.1.1 ? /usr/lib/libssl.so.1.1
ln -s /usr/local/ssl/lib/libcrypto.so.1.1 ? /usr/lib/libcrypto.so.1.1
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v
4.openssh安裝
備份原配置
mkdir ? ?/usr/bin/ssh_old_bk
cp ?-ar ?/usr/bin/ssh* ? /usr/bin/ssh_old_bk
cp ?-a ?/usr/sbin/sshd /usr/sbin/sshd_old_bk
mkdir ? /etc/ssh_old_bk ?
cp ?-ar ?/etc/ssh/* ? ?/etc/ssh_old_bk
cp ?/etc/init.d/sshd ? ?/etc/init.d/sshd_old_bk?
cp ?/etc/pam.d/sshd ? /etc/pam.d/sshd._old_bk?
cp ?/etc/sysconfig/sshd ?/etc/sysconfig/sshd_old_bk
cp /usr/lib/systemd/system/sshd.service ? /usr/lib/systemd/system/sshd.service_old_bk
安裝openssh
tar -zxvf openssh-9.2p1.tar.gz
cd openssh-9.2p1
./configure --prefix=/usr/local/openssh ?--with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make && ?make install
make clean
for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps ;done 卸載原包
復(fù)制配置
cp -ar ?/usr/local/openssh/bin/* ? /usr/bin/
cp -a ?/usr/local/openssh/sbin/sshd ?/usr/sbin/sshd
mkdir ?/etc/ssh
cp ?-a ?/usr/local/openssh/etc/ssh_host_ecdsa_key.pub ?/etc/ssh/ssh_host_ecdsa_key.pub
cp -a ?/usr/openssh-9.2p1/contrib/redhat/sshd.init ?/etc/init.d/sshd ? ? ? ?
cp -a ?/usr/openssh-9.2p1/contrib/redhat/sshd.pam /etc/pam.d/sshd ?
chmod +x /etc/init.d/sshd ? ?
配置sshd_config
echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config
?
運(yùn)行服務(wù)
systemctl daemon-reload
systemctl enable sshd.service
systemctl start sshd.service
ssh -V
升級(jí)后xshell5遠(yuǎn)程連接提示:找不到匹配的host key算法,此時(shí)升級(jí)到xshell7可以了
恢復(fù)版本openssh-7.4p1-21,提前下載原版本包:
刪除zlib
rm ? -rf ? /usr/local/zlib
rpm -qa | grep ?zlib
openssl恢復(fù)
rpm -ivh --nodeps ? penssl-1.0.2k-19.el7.x86_64.rpm
mv ? /usr/bin/openssl.bak ? ?/usr/bin/openssl
cp ? -a ? ? libssl.so.1.0.2k ? ? ? ? ? ?/usr/lib64? ? ? ??
cp ? -a ? ?libcrypto.so.1.0.2k ? ? ? ?/usr/lib64? ? ?
ls ?-n ? ?libssl.so.1.0.2k ? ?libssl.so.10? ? ? ? ? ? ? ? ??
ls ?-n ? ?libcrypto.so.1.0.2k ?libcrypto.so.10? ? ? ?
rm -rf ? ?/usr/lib/libssl.so.1.1? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
rm -rf ?/usr/lib/libcrypto.so.1.1? ? ? ? ? ? ? ? ? ? ? ? ?
vim ? /etc/ld.so.conf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
ldconfig -v
rm -rf ?/usr/local/ssl? ??
openssl ?version
openssh恢復(fù)
rpm -ivh --nodeps ? ?openssh-7.4p1-21.el7.x86_64.rpm
cp ? -ar ?/usr/bin/ssh_old_bk/ssh* ? ? ? /usr/bin/
mv ? ?/usr/sbin/sshd_old_bk ? ? /usr/sbin/sshd ?
cp ?-ar ? ? ?/etc/ssh_old_bk/* ? ? ? ?/etc/ssh/
mv ? /etc/init.d/sshd_old_bk ? ? /etc/init.d/sshd?
chmod +x /etc/init.d/sshd?
mv ? ? /etc/pam.d/sshd._old_bk ? ? /etc/pam.d/sshd
mv ? ?/etc/sysconfig/sshd_old_bk ? /etc/sysconfig/sshd
mv ? ?/usr/lib/systemd/system/sshd.service_old_bk ? /usr/lib/systemd/system/sshd.service ??
rm -rf ?/usr/local/openssh
重啟服務(wù)
service sshd restart
恢復(fù)可能報(bào)錯(cuò)解決:
1.秘鑰文件損壞
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
2.
sshd -t? 提示/var/empty報(bào)錯(cuò)
chown -R root.root /var/empty/sshd ?#將文件所述用戶調(diào)整為root用戶
chmod 744 ?/var/empty/sshd #調(diào)整文件權(quán)限
service sshd restart? ?
ssh -V
3.賬戶名密碼輸入正確,sshd配置文件沒錯(cuò),就是提示Permission denied, please try again,可能是/etc/pam/下缺少sshd文件,復(fù)制一份就好了
參考鏈接:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-483274.html
https://blog.csdn.net/s619782146/article/details/125533781
https://www.cnblogs.com/yangweiting/articles/17061915.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-483274.html
到了這里,關(guān)于手把手教你ssh升級(jí)openssh9.2,升級(jí)失敗回退,純干貨的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!