CentOS系统openssh升级教程

注意:升级openssh版本有风险,升级过程中不能中断!否则服务器有失联的风险。使用VPN连接远程操作的,网络不稳定的请勿操作。

按本教程操作,网络稳定的情况下,99%的都会成功。文章源自新逸网络-https://www.xinac.net/9228.html

网上很多教程先安装telnet服务,本文省略,有需要的自己查。telnet需要额外的端口,默认23,一般有升级openssh需求的都是为客户服务的,开放端口很难很难,意义不大。(服务器失联后联系客户都有办法解决,没必要跑路~)文章源自新逸网络-https://www.xinac.net/9228.html

 文章源自新逸网络-https://www.xinac.net/9228.html

服务器上需要安装gcc等工具,服务器没有安装的,可以下载rpm包或者挂载iso镜像安装。文章源自新逸网络-https://www.xinac.net/9228.html

-- 23.11.27  更新命令和相关版本号,openssh9.3以下版本都有漏洞文章源自新逸网络-https://www.xinac.net/9228.html

0、安装编译环境

yum update openssl openssh -y
yum install vim gcc glibc make autoconf openssl-devel pcre2-devel pam-devel zlib-devel rsync wget perl -y
yum install pam* zlib* -y

1、编译openssl

## 注意:升级openssh时可不用升级openssl,建议使用系统自带的openssl,强行升级openssl可能会有很多问题!
## 注意,openssh9.3起,编译时需要openssl 1.1或以上的版本

openssl version
mkdir /opt/openssh && cd /opt/openssh
wget https://download.xinac.net/openssl/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz && cd /opt/openssh/openssl-1.1.1w

# 编译安装新版本的openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared -fPIC
make depend && make && make install

# 验证安装
/usr/local/openssl/bin/openssl version

## 勿必要验证一下,如果有问题在这一步及时排除。
## 可能出现的问题:
#### 1. 执行上述命令,报 libssl.so.1.1: cannot open shared object file
#### 解决方案:
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
 
########################################################
### 如果只是升级openssh,以下命令不需要执行,不会影响系统已有的openssl
### 以下命令执行后,将影响系统已有的openssl
ll /usr/local/openssl/lib # 检查文件是否存在
cat /etc/ld.so.conf
echo '/usr/local/openssl/lib' >> /etc/ld.so.conf  #添加函数库
ldconfig
########################################################
 
# 升级完成,查看版本号
openssl version

2、升级openssh

ssh -V
mkdir -p /opt/openssh && cd /opt/openssh
wget https://download.xinac.net/openssl/openssh-9.5p1.tar.gz
tar -zxvf openssh-9.5p1.tar.gz && cd /opt/openssh/openssh-9.5p1

## 使用系统自带的 openssl 时,执行此命令
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-md5-passwords --with-zlib --with-pam
 
## 使用自编译的 openssl 时,执行此命令
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-zlib --with-pam --without-openssl-header-check
 
## 可能会遇到如下报错:
checking OpenSSL header version... not found
configure: error: OpenSSL version header not found.
 
## 解决方案和上边一样
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
 
## 注意,移除之后,不能退出当前终端,若退出,将无法通过SSH连接到服务器!
mv /etc/ssh /etc/ssh_$(date "+%Y%m%d")
 
## 编译安装之前,确认已经做好了备份
make && make install
echo "
Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
X11Forwarding yes
# 开启公钥验证
PubkeyAuthentication yes
# UseLogin no
# UsePAM yes
" >> /etc/ssh/sshd_config
 
## 启用UsePAM需要禁用selinux(启用UsePAM有ssh连接不上的风险,没配置好可先不启用)
## 如果不启用 UsePAM ,普通用户可能登录不上,root用户不受影响
# vim /etc/ssh/sshd_config
UsePAM yes
 
## 注意,如果不启用 UsePAM ,普通用户登录可能会有问题,可使用以下默认文件配置并启用PAM
curl https://download.xinac.net/openssl/sshd-el7.pam -o /etc/pam.d/sshd
 
## 注意 sshd-el7.pam 文件的版本和操作系统对应
## 此文件为原版系统中的默认文件,如使用,可忽略下方对此文件的修改

3、修改启动脚本

## 卸载 openssh 之前一定要先备份此文件!
cp /etc/pam.d/sshd /etc/pam.d/sshd_$(date "+%Y%m%d")
 
## 卸载原有openssh
rpm -qa | grep openssh
rpm -e --nodeps `rpm -qa | grep openssh`
 
## 提示警告
## 将警告中被修改的文件名字再改回来
mv /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config
mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config
mv /etc/ssh/moduli.rpmsave /etc/ssh/moduli
 
## 如果UsePAM yes,sshd的pam文件需要存在
mv /etc/pam.d/sshd.rpmsave /etc/pam.d/sshd
 
## 还原备份的文件
rsync -avb /etc/pam.d/sshd_$(date "+%Y%m%d") /etc/pam.d/sshd
 
## 拷贝启动脚本
rsync -av ./contrib/redhat/sshd.init /etc/init.d/sshd
rsync -avb ./contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
 
## 添加开机启动
chkconfig sshd on
 
########################################################
## 修改启动脚本(按本文教程此处不需要修改)
# vim /etc/init.d/sshd
## 注意,根据你的实际情况修改
# SSHD=/usr/local/openssh/sbin/sshd
## 注意根据自身情况修改路径
#/usr/local/openssh/bin/ssh-keygen –A
#/sbin/restorecon /etc/ssh/ssh_host_key.pub
#/sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub
#/sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub
#/sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub
########################################################
 
## 替换相关命令,并重启sshd服务
rsync -avb /usr/local/openssh/bin/* /usr/bin/
rsync -avb /usr/local/openssh/sbin/* /usr/sbin/
 
## 重启sshd服务,升级完成(一定要再次确认以上所有操作!!!)
/etc/init.d/sshd restart
 
## 有些报告提示scp有漏洞,可以删除或重命名(可选)
mv /usr/bin/scp /usr/bin/scp_bak
mv /usr/local/openssh/bin/scp /usr/local/openssh/bin/scp_bak

4、其它

如果只需要安装 openssl 1.1 的库,可直接执行以下操作文章源自新逸网络-https://www.xinac.net/9228.html

## epel配置可参考:https://mirrors.xinac.net/%40%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/#epel
 
yum install epel-release
yum install openssl11 openssl11-libs openssl11-devel

 文章源自新逸网络-https://www.xinac.net/9228.html 文章源自新逸网络-https://www.xinac.net/9228.html

weinxin
新逸IT技术
扫一扫关注微信公众号
Admin
  • 本文由 发表于 2021-06-29
  • 转载请注明:https://www.xinac.net/9228.html
评论  0  访客  0
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定