1.第一步,和网上众多博客说的一样,先安装Telnet,以防更新失败了,没有备用通过进行操作调整,这里我不在赘述了。

2.第二步,是安装镜像,OpenSSL只有官网的一种,而openssh官网提供了三种协议的镜像,我用的是国内的阿里云的镜像

 即是:

OpenSSL:

https://www.openssl.org/source/

openssh:

官网:

OpenSSH: for OpenBSD

阿里云:

https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/openssh-9.0.tar.gz

3.第三步就是具体操作的了,我这里分了四步,首先第一步就是下载镜像和编译用的公共组件:

wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.5.tar.gz

wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz

wget http://zlib.net/zlib-1.2.12.tar.gz

以上就是需要下载主要的镜像和公共组件,过程中如果没有wget,可以自己用yum安装一个,如果是纯离线环境,自己再撘一个离线镜像yum源。接着就是yum安装一些在编译过程需要的其他的组件:

yum install -y perl-CPAN

 yum -y install pam-devel

 yum install distro-sync rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel xmkmf libXt-devel gtk2-devel make -y

以上就是具体的命令,这里的组件看情况没有就装,我在给很多台服务器升级OpenSSL和openssh过程中基本80%都缺,所以这里就无脑yum install,其中perl-CPAN,安装完以后需要进行入其命令行界面安装IPC/cmd.pm模块,具体命令如下:

perl -MCPAN -e shell

根据自己的实际情况选择perl配置(我这里是无脑默认的)后,效果是如下截图:

 接着在这个命令行执行以下的命令,进行安装IPC/cmd.pm模块

install IPC/Cmd.pm

 到这里需要用yum安装组件就已经安装完了,剩下一个zlib需要通过源码安装,这里直接上命令:

tar -xvf zlib-1.2.12.tar.gz

cd zlib-1.2.12

./configure

 make && make install

4.第四步编译安装OpenSSL和openssh,前期的准备工作好了,安装编译比较简单,直接上命令:

openssl:

tar -xvf openssl-3.0.5.tar.gz

cd openssl-3.0.5

./config -fPIC --openssldir=/etc/pki/tls --prefix=/etc/pki/tls shared  zlib

 make && make install

备份:

mv /usr/bin/openssl /usr/bin/openssl.bak

 mv /usr/include/openssl /usr/include/openssl.bak

配置指向新版

ln -s /etc/pki/tls/bin/openssl /usr/bin/openssl

 ln -s /etc/pki/tls/include/openssl /usr/include/openssl

配置库文件

ln -sf /etc/pki/tls/lib64/libssl.so.3 /usr/lib64/libssl.so.3

 ln -sf /etc/pki/tls/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

配置文件生效

 echo "/etc/pki/tls/lib64" >> /etc/ld.so.conf

 ldconfig -v

openssl 这里已经升级完成,通过openssl version -a 可以查看下当前openssl的版本信息:

注意,在安装升级OpenSSL ,先通过openssl version -a查看下当前这个版本的安装路径就是这个“OPENSSLDIR”属性指向的目录,这个目录就是你的升级的目录

openssh:

 tar -zxvf openssh-9.0p1.tar.gz

cd openssh-9.0p1

mv /etc/ssh /etc/ssh.bak  //备份配置文件

./configure --prefix=/usr/local/openssh9.0 --sysconfdir=/etc/ssh/  --with-md5-passwords --mandir=/usr/share/man --with-zlib --with-pam  --with-ssl-dir=/etc/pki/tls/

 make && make install

安装完成后通过这个命令检测一下配置文件:

 /usr/local/openssh9.0/sbin/sshd -t -f /etc/ssh/sshd_config

修改配置文件:

echo "X11Forwarding yes" >> /etc/ssh/sshd_config
echo "X11UseLocalhost no" >> /etc/ssh/sshd_config
echo "XAuthLocation /usr/bin/xauth" >> /etc/ssh/sshd_config
echo "UseDNS no" >> /etc/ssh/sshd_config
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PubkeyAuthentication yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
echo 'KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1' >> /etc/ssh/sshd_config

更新备份ssh相关执行脚本:

mv /usr/sbin/sshd /usr/sbin/sshd20220708.bak
cp -rf /usr/local/openssh9.0/sbin/sshd /usr/sbin/sshd
mv /usr/bin/ssh /usr/bin/ssh20220708.bak
cp -rf /usr/local/openssh9.0/bin/ssh /usr/bin/ssh
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen2022-07-08.bak
cp -rf /usr/local/openssh9.0/bin/ssh-keygen /usr/bin/ssh-keygen

更换sshd的启动脚本:

rm -rf /usr/lib/systemd/system/sshd.service

在解压的openssh安装包目录下执行:

cp contrib/redhat/sshd.init /etc/init.d/sshd

最后再执行:

systemctl enable sshd.service
systemctl daemon-reload
systemctl restart sshd

以上操作完成以后openssh已经升级完毕了,你可以通过ssh -V或者systemctl status sshd查看一下安装情况:

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐