Linux服务器升级openssh9.8最新版全过程,及遇到问题处理

前言:由于2024年7月1日,openssh发布了最新版9.8,所以服务器需要升级一下,特此做个详细记录:

由于下载最新版openssh9.8,需要将openssl也一并进行升级

一、下载openssh最新版本与openssl对应版本:

openssh最新版本下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable//

openssl对应版本下载地址(这下载OpenSSL 1.1.1v就可以):

Release OpenSSL 1.1.1w · openssl/openssl · GitHub

下载之后,请上传到需要升级的服务器的路径下

二、openssl安装:

2-1、安装前检查:

# 查看CentOS系统版本信息
cat /etc/redhat-release
# 查看openssl版本信息
openssl version
# 查看openssh的版本信息
ssh -V

2-2、安装依赖

# 安装相关的依赖项,如有遗漏再次安装
yum -y install gcc pam-devel zlib-devel openssl-devel net-tools

2-3、安装下载的openssl

由于openssh9.8p1要求openssl版本大于等于1.1.1,因此需要升级安装openssl。

①、解压openssl-1.1.1v.tar.gz
# 将openssl-1.1.1v解压到/usr/local目录下
Tar zxvf /home/test/openssl-1.1.1v.tar.gz –C /usr/local/
# 查看解压后目标目录情况
ll /usr/local/ | grep openssl
# 进入openssl-1.1.1v目录下
cd /usr/local/openssl-1.1.1v/
②、openssl准备及安装
# 创建安装目录
mkdir /opt/openssl
# 安装前查看openssl详细版本信息
openssl version

#编译
# 配置编译和安装过程,"--prefix=" 选项配置安装目录
./config --prefix=/opt/openssl
# 构建程序以及所需的指令和依赖关系
make
# 安装编译好的openssl-1.1.1w
make install

# 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功
③、更新lib文件
# 检查openssl-1.1.1v所需要的函数库
ldd /opt/openssl/bin/openssl
# 添加openssl-1.1.1v的库文件路径到ld.so.conf
echo "/opt/openssl/lib" >> /etc/ld.so.conf
# 更新系统函数库库 
ldconfig --verbose
# 绝对路径查看openssl版本
ldd /opt/openssl/bin/openssl
④、更新bin文件
# 查看旧版本的openssl命令路径
which openssl
# 重命名为openssl.old
mv /bin/openssl /bin/openssl.old   #重命名openssl文件
# 使用软连接的方式更新openssl命令
ln -s /opt/openssl/bin/openssl /bin/openssl
# openssl命令查看版本呢
openssl version

三、openssh9.8安装

3-1、解压下载的安装包,卸载原来包

tar zxvf openssh9.7p1.tar.gz

# 卸载openssh的rpm包
for i in $(rpm -qa | grep openssh);do rpm -e $i --nodeps;done

3-2、进入解压文件后,开始编译

# 配置编译和安装过程,"--prefix=" 配置安装目录,"--sysconfdir=" 配置文件路径,"--with-ssl-dir=" openssl的安装路径

./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/opt/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening

# 构建程序以及所需的指令和依赖关系
make
# 安装编译好的openssh9.8p1
make install

# 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功

3-3、复制并修改启动sshd.init脚本

# 从源码目录下复制sshd.init到/etc/init.d/
cp contrib/redhat/sshd.init /etc/init.d/

## 查看并修改SSHD的新路径,将新的openssh安装路径更新
cat /etc/init.d/sshd.init | grep SSHD
sed -i "s/SSHD=\/usr\/sbin\/sshd/SSHD=\/usr\/local\/openssh\/sbin\/sshd/g" /etc/init.d/sshd.init
cat /etc/init.d/sshd.init | grep SSHD

## 查看并修改ssh-keygen的新路径,将新的ssh-keygen安装路径更新
cat -n /etc/init.d/sshd.init | grep ssh-keygen
sed -i "s#/usr/bin/ssh-keygen -A#/usr/local/openssh/bin/ssh-keygen -A#g" /etc/init.d/sshd.init
cat -n /etc/init.d/sshd.init | grep ssh-keygen

3-4、修改配置文件

# 开启允许X11转发
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config 
# 开启允许密码验证
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config 

3-5、启动openssh,并设置开机启动

# 复制ssh的相关命令
cp -arp /usr/local/openssh/bin/* /usr/bin/
# 启动sshd服务
/etc/init.d/sshd.init
# 查看版本
ssh –V
# 添加开机启动
chmod +x /etc/rc.d/rc.local
echo “/etc/init.d/sshd.init start” >> /etc/rc.d/rc.local  

如果启动不成功,通过命令查看,是什么原因导致的

#通过 systemctl status sshd查看sshd是否正常启动
systemctl status sshd
如果执行上边命令也不可以,那么需要执行:
yum install openssh-server

#执行后,如果显示activing或者dead没有正常启动,那么需要执行命令,查看具体异常原因:

tail -f /var/log/messages

#根据日志情况,结果看到原因是22端口被占用导致无法正常启动(图当时没截)

所以需要将22端口kill掉,特别注意,执行下边这个命令后,你连接的这台服务器会马上连接不上了!!!,前边都执行没有问题,才可以执行,执行过几分钟后,再来链接发现正常链接上了:

fuser -k 22/tcp     #执行时需特别注意

#如果怕执行上诉命令后连接不上,可以设置一个linux定时,操作方法如下:

使用cron的方法:
编辑当前用户的crontab文件:

crontab -e

添加以下行来检查SSH服务并在它停止时重启:

* * * * * pgrep sshd > /dev/null || /usr/sbin/sshd

这个crontab条目每分钟都会检查sshd进程是否运行。如果不运行,它将尝试重启SSH服务。

再次连接,发现可以正常链接上了,并通过命令查看是否为最新版本:

结束!

### 升级OpenSSH9.8版本的过程 对于Linux ARM服务器而言,升级OpenSSH9.8版本涉及几个重要步骤。考虑到ARM架构可能存在的特定依赖关系以及兼容性问题,在执行任何操作前备份现有配置文件是非常重要的[^1]。 #### 准备工作 确保系统已经安装了必要的编译工具链和其他开发库,这可以通过包管理器完成。例如,在基于Debian/Ubuntu系统的ARM设备上可以运行如下命令来获取所需软件: ```bash sudo apt-get update && sudo apt-get install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev checkinstall ``` #### 下载并验证源码 前往官方网站或其他可信资源下载适用于目标平台的OpenSSL和OpenSSH源代码压缩包,并确认其完整性与真实性。通常官方会提供校验和用于此目的。 #### 编译环境设置 解压所获得的tarball之后进入对应的目录内按照说明文档指示调整Makefile中的参数以适应本地硬件特性;特别是针对ARM处理器优化选项的选择至关重要。 #### 安装过程 在完成了上述准备工作以后便可以直接调用`./configure`, `make` 和 `make install` 命令序列来进行实际构建与部署流程。值得注意的是如果当前环境中存在旧版本的服务程序,则建议先停止它们以免造成冲突。 ```bash cd /path/to/downloaded/source/ ./configure --prefix=/usr/local --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib=shared --without-hardening CFLAGS="-march=native" make sudo make install ``` 以上命令假设用户希望把新版本安置于标准路径下同时保留原有的/etc/sshd_config位置不变以便迁移自定义设定项[^2]。 #### 配置服务启动方式 最后一步是要确保新的sshd守护进程能够随操作系统一同自动加载。依据发行版的不同采用init脚本或是systemd单元文件的形式实现这一点。务必测试新安装后的实例能否正常监听网络端口并且接受远程连接请求。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值