centos7升级openssh服务安装openssh7.9

本文介绍centos7的ssh版本升级过程,升级到openssh9.7p1

一、准备工作

  1. 查看centos7、ssh以及openssl的版本信息
bash 复制代码
# 查看CentOS系统版本信息
cat /etc/redhat-release
# 查看openssl版本信息,这块需要注意升级 ssh 必须保证是 openssl 1.1.1
openssl version
# 查看openssh的版本信息 
ssh -V
  1. 安装依赖
bash 复制代码
# 安装相关的依赖项,如有遗漏再次安装
yum -y install gcc pam-devel zlib-devel openssl-devel net-tools 

二、安装 openssl

1.下载openssl并解压

bash 复制代码
# 下载openssl
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz

# 解压openssl
tar -zxvf openssl-1.1.1w.tar.gz

# 进入openssl目录
cd openssl-1.1.1w

2.编译openssl

bash 复制代码
# 配置编译和安装过程,"--prefix=" 选项配置安装目录
./config --prefix=/usr/local/openssl shared zlib

# 构建程序以及所需的指令和依赖关系
make 

# 安装编译好的openssl-1.1.1w
make install
# 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功

3.更新lib文件

bash 复制代码
# 检查openssl-1.1.1w所需要的函数库
ldd /usr/local/openssl/bin/openssl

# 注意相关类库必须都显示,否则后续无法正常安装
![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/af6701fbb6db4ec0aa3e4221eda07df9~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1768&h=402&s=739178&e=png&b=020202)

# 添加openssl-1.1.1w的库文件路径到ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

# 旧版重命名 openssl.old
mv /usr/bin/openssl /usr/bin/openssl.old

# 使用软连接的方式更新openssl命令
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

# 更新系统函数库库
ldconfig -v

# 查看openssl版本,如果是 1.1.1w 那么恭喜你完成了第一步
openssl version

三、安装 openssh9.7P

1.下载openssh并解压

bash 复制代码
# 返回上一目录
cd ..

# 下载 openssh
wget -O openssh.tar.gz https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz

# 解压openssh
tar -zxvf openssh.tar.gz

# 进入openssh目录
cd openssh-9.7p1

2.编译openssl

javascript 复制代码
# 配置编译和安装过程,"--prefix=" 配置安装目录,"--sysconfdir=" 配置文件路径,"--with-ssl-dir=" openssl的安装路径
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening

# 构建程序以及所需的指令和依赖关系
make

# 安装编译好的openssh9.7p1
make install
# 备注:以上三步必须没有出现报错(error),才可以继续下一步,全部三步无报错才能视为安装成功

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

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

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

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

4.修改配置文件(sshd_config)

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

5.启动openssh,并设置开机启动

bash 复制代码
# 复制ssh的相关命令
cp -arp /usr/local/openssh/bin/* /usr/bin/

# 启动sshd服务
/etc/init.d/sshd

# 查看版本
ssh --V

# 添加开机启动
chmod +x /etc/rc.d/rc.local
echo "/etc/init.d/sshd start" >> /etc/rc.d/rc.local  

测试openssh连接

非常重要,一定要重新打开一个 shell 测试 openssh 连接,否则后续万一出现无法连接服务器就麻烦了

相关推荐
AI逐月4 分钟前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊32 分钟前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey1 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1151 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng1 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.1 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon1 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq2 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan2 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
skywalk81632 小时前
尝试在openi启智社区的dcu环境安装ollama最新版0.15.2(失败)
linux·运维·服务器·ollama