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 连接,否则后续万一出现无法连接服务器就麻烦了

相关推荐
HLC++2 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室3 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy5 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕6 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫7 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生8 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.119 小时前
linux基础IO
linux·运维·服务器
BelongPanda11 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯11 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983411 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器