当前位置: 首页 > news >正文

Ubuntu 22.04 离线升级 OpenSSH 到 9.8p1

Ubuntu 22.04 离线升级 OpenSSH 到 9.8p1 完整步骤

注意: ssh升级很容易导致断开连接后无法再连接上,所以升级过程中不要轻易断开连接。

一、准备工作

1. 环境要求
  • 系统版本:Ubuntu 22.04
  • OpenSSL 版本:需要 OpenSSL 1.1.1 或更高版本支持
  • 备份要求:务必在升级前进行完整备份,防止升级失败无法回滚
2. 依赖包准备(在有网络的环境中操作)

方法一:使用 apt-get download 命令

# 创建下载目录
mkdir -p ~/offline-packages
mkdir -p ~/offline-packages/ssh_deps
cd ~/offline-packages# 下载所有依赖包
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances openssh-server | grep "^\w" | sort -u)# 下载编译工具依赖
sudo apt-get download build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libaudit-dev libkrb5-dev libgss-dev libwrap0-dev

方法二:使用 apt-get --download-only

# 更新软件包列表
sudo apt-get update# 只下载不安装
sudo apt-get install --download-only build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libaudit-dev libkrb5-dev libgss-dev libwrap0-dev# 将下载的包复制到离线包目录
cp /var/cache/apt/archives/*.deb ~/offline-packages/ssh_deps

注:如果系统满足依赖要求,则可以不用再进行该步骤依赖包的升级

3. 下载 OpenSSH 9.8p1 源码包
# 在有网络的环境中下载
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz# 将源码包和依赖包一起打包
tar -czvf openssh-offline-packages.tar.gz ~/offline-packages/ openssh-9.8p1.tar.gz

二、离线升级步骤

1. 传输文件到目标服务器

将打包好的 openssh-offline-packages.tar.gz 文件通过U盘或其他方式传输到目标服务器。

2. 解压文件
# 创建工作目录
mkdir -p /opt/openssh-upgrade
cd /opt/openssh-upgrade# 解压离线包
tar -zxvf openssh-offline-packages.tar.gz# 进入离线包目录
cd offline-packages
3. 安装依赖包
# 安装所有依赖包
cd /opt/openssh-upgrade/offline-packages/ssh_deps
sudo dpkg -i *.deb# 如果出现依赖问题,尝试修复
sudo apt-get -f install
4. 备份当前ssh配置
# 备份 SSH 配置文件
sudo cp -r /etc/ssh /etc/ssh.backup
sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup# 备份二进制文件
sudo cp /usr/sbin/sshd /usr/sbin/sshd.backup
sudo cp /usr/bin/ssh /usr/bin/ssh.backup
sudo cp /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
5. 编译安装 OpenSSH 9.8p1
# 解压源码包
cd /opt/openssh-upgrade
tar -zxvf openssh-9.8p1.tar.gz
cd openssh-9.8p1# 配置编译选项
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --without-hardening# 编译并安装
make -j$(nproc)
sudo make install
6. 替换系统二进制文件
# 备份原文件并替换为新版本
sudo mv /usr/sbin/sshd /usr/sbin/sshd.bak
sudo cp /usr/local/ssh/sbin/sshd /usr/sbin/sshdsudo mv /usr/bin/ssh /usr/bin/ssh.bak
sudo cp /usr/local/ssh/bin/ssh /usr/bin/sshsudo mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
sudo cp /usr/local/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
7. 配置 SSH 服务
# 修改配置文件
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

注:注意检查ssh端口,需要修改端口跟原来ssh用的端口保持一致。

8. 重启 SSH 服务并验证
# 重启 SSH 服务
sudo systemctl restart ssh# 验证版本
ssh -V# 检查服务状态
sudo systemctl status ssh

三、验证升级结果

1. 版本验证
# 查看 SSH 版本
ssh -V
# 应该显示:OpenSSH_9.8p1, OpenSSL 1.1.1  11 Sep 2018# 查看 SSH 守护进程版本
/usr/sbin/sshd -V
2. 服务验证
# 检查 SSH 服务状态
sudo systemctl status ssh# 查看 SSH 连接日志
sudo tail -f /var/log/auth.log
3. 连接测试
# 本地连接测试
ssh localhost# 从其他机器连接测试
ssh -p ssh-port username@server-ip

四、故障排除

1. 常见问题及解决方案

问题1:编译时缺少依赖

# 如果出现 zlib.h missing 错误
sudo apt-get install zlib1g-dev# 如果出现 libcrypto not found 错误
sudo apt-get install libssl-dev

问题2:服务启动失败

# 查看详细错误信息
sudo journalctl -u ssh -f# 检查配置文件语法
sudo sshd -t

问题3:无法连接

# 检查防火墙设置
sudo ufw status
sudo ufw allow ssh# 检查 SSH 端口监听
sudo netstat -tlnp | grep ssh

五、回滚方案

如果升级失败,可以按照以下步骤回滚:

# 停止 SSH 服务
sudo systemctl stop ssh# 恢复备份文件
sudo cp -r /etc/ssh.backup/* /etc/ssh/
sudo cp /etc/pam.d/sshd.backup /etc/pam.d/sshd
sudo cp /usr/sbin/sshd.backup /usr/sbin/sshd
sudo cp /usr/bin/ssh.backup /usr/bin/ssh
sudo cp /usr/bin/ssh-keygen.bak /usr/bin/ssh-keygen# 重启 SSH 服务
sudo systemctl start ssh

六、安全建议

  1. 定期更新:定期检查 OpenSSH 的安全更新
  2. 配置优化:根据安全最佳实践配置 SSH
  3. 监控日志:定期检查 SSH 连接日志
  4. 密钥认证:推荐使用 SSH 密钥认证替代密码认证
  5. 防火墙配置:限制 SSH 访问来源 IP

通过以上完整步骤,您可以在 Ubuntu 22.04 系统上成功离线升级 OpenSSH 到 9.8p1 版本。建议在升级前做好充分备份,并在升级后进行全面测试以确保系统稳定运行。

http://www.dtcms.com/a/564944.html

相关文章:

  • Dify 插件开发与打包教程 (Mac)
  • FastMCP 入门:用 Python 快速搭建 MCP 服务器接入 LLM
  • 常见DGX A100服务器维修故障问题及解决方法
  • Linux系统编程——exec函数族
  • 简单搭建express服务器
  • 设置网站建设大连专业网站设计服务商
  • Ollama + Open WebUI
  • 张家界市建设工程造价管理站网站好看的ui界面
  • 【WEB应用安全】XSS攻击实验全流程实战!从漏洞检测到Cookie窃取(附Payload解析+避坑指南)
  • Linux系统启动流程深度解析:从BIOS到用户空间的全链路指南
  • AI编程工具TRAE解决日常问题之SQLite数据复制
  • 百度网盘下载速度被限制怎么办?百度网盘如何解除限速下载方法
  • 多协议网关架构
  • 深入级联不稳定性:从 Lipschitz 连续性视角探讨图像恢复与目标检测的协同作用
  • 如何实现html显示WebRTC视频监控流
  • 长沙网站设计服务商wordpress和vue
  • DeepSeek-OCR 深度解析
  • [手机AI开发sdk] Aid_code IDE | PC浏览器同步访问
  • 视觉语言模型(VLM)深度解析:如何用它来处理文档
  • 空载长线电容效应
  • Text Grab,一款OCR 截图文字识别工具
  • 网站建设与管理教学方案网站的技术解决方案
  • 从零开始学习iOS App开发:Xcode、Swift和发布到App Store完整教程
  • HTMLCollection 对象
  • CANN算子开发实战:Batch Normalization高性能实现指南
  • 【Delphi】再谈给EXE文件动态添加数据(附加大数据 2G)
  • 1、Python-内置函数、Pass空语句
  • 为什么 Transformer 使用 LayerNorm 而不是 BatchNorm?
  • 昇腾 NPU 实战:Gemma 2 模型部署、多维度评测与性能优化全流程解析
  • 使用Visual Studio中的数据断点快速定位内存越界问题的实战案例分享