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

OpenSSH 9.9p2 编译安装全流程指南

🔐 OpenSSH 9.9p2 编译安装全流程指南

适用系统:麒麟 v10 SP3、Ubuntu 22.04 LTS、CentOS 7.9
📝 目的:从源码编译安装 OpenSSH 9.9p2 并升级 OpenSSL 至 1.1.1w 版本
🧰 适用于:系统管理员、安全加固、漏洞修复场景


📚 目录

  1. 概述
  2. 通用准备工作
  3. 麒麟 v10 SP3 安装流程
  4. Ubuntu 22.04 LTS 安装流程
  5. CentOS 7.9 安装流程
  6. 常见问题与解决方法
  7. 总结与后续建议

1️⃣ 概述

本文档提供在以下三种 Linux 发行版中编译安装 OpenSSH 9.9p2 的完整操作流程,并附带 OpenSSL 升级、telnet 临时连接配置、systemd 启动脚本等实用操作说明:

系统名称版本信息是否已验证
麒麟 LinuxKylin v10 SP3✅ 是
Ubuntu22.04 LTS✅ 是
CentOS7.9✅ 是

2️⃣ 通用准备工作

安装依赖包

🐧 CentOS / 麒麟
sudo yum install -y gcc make zlib-devel openssl-devel pam-devel perl wget
🐱 Ubuntu
sudo apt update
sudo apt install -y build-essential zlib1g-dev libssl-dev perl wget

下载 OpenSSH 源码包

cd /usr/local/src
wget https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-9.9p2.tar.gz
tar -zxvf openssh-9.9p2.tar.gz
cd openssh-9.9p2

3️⃣ 麒麟 v10 SP3

编译安装 OpenSSH

./configure --prefix=/app/tools/openssh-9.9p2/
make -j $(nproc)
make install

创建软链接:

ln -s /app/tools/openssh-9.9p2 /app/tools/openssh

配置 Telnet 临时连接(防止断连)

yum install -y telnet-server
systemctl enable telnet.socket --nowuseradd zbl
echo 'zhubaolin@123' | passwd --stdin zbl
echo 'zbl ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers

使用 telnet 登录后切换 root 用户进行操作。


修改 SSHD 配置文件

cp /app/tools/openssh/etc/sshd_config{,.bak}
cat > /app/tools/openssh/etc/sshd_config <<EOF
Port 22
PermitRootLogin yes
PasswordAuthentication yes
UseDNS no
EOF

停止旧服务并启动新版本:

pkill sshd
/app/tools/openssh/sbin/sshd

设置环境变量

echo 'export PATH=/app/tools/openssh/bin:/app/tools/openssh/sbin:$PATH' >> /etc/profile
source /etc/profile

systemd 管理服务

创建服务文件 /usr/lib/systemd/system/sshd99.service

[Unit]
Description=OpenSSH 9.9 server daemon
After=network.target[Service]
Type=simple
ExecStart=/app/tools/openssh/sbin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=multi-user.target

启用服务:

systemctl daemon-reload
systemctl disable --now sshd
systemctl enable --now sshd99

清理旧版本(谨慎操作-可选)

rpm -qa | grep openssh | xargs rpm -e --nodeps

4️⃣ Ubuntu 22.04 LTS

安装 Telnet 服务

apt install -y openbsd-inetd telnetd

配置文件 /etc/xinetd.d/telnet

service telnet
{disable         = noflags           = REUSEsocket_type     = streamwait            = nouser            = rootserver          = /usr/sbin/in.telnetdlog_on_failure += USERID
}

启动服务:

systemctl enable inetd --now

编译安装 OpenSSH

步骤同上(略)


systemd 配置

创建用户 sshd

useradd -s /sbin/nologin -M sshd

配置 systemd 文件后启用服务:

systemctl daemon-reload
systemctl enable --now sshd99
systemctl disable --now inetd

5️⃣ CentOS 7.9

升级 OpenSSL 到 1.1.1w

wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
tar xf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config
make -j $(nproc)
make installecho '/usr/local/lib64/' > /etc/ld.so.conf.d/openssl.conf
ldconfig

编译安装 OpenSSH

步骤同上(略)


创建软链接和环境变量

ln -s /app/tools/openssh-9.9p2 /app/tools/openssh
echo 'export PATH=/app/tools/openssh/bin:/app/tools/openssh/sbin:$PATH' >> /etc/profile
source /etc/profile

6️⃣ 常见问题与解决方法

问题描述解决方法
libcrypto not found找不到 OpenSSL 共享库/usr/local/lib64 加入 /etc/ld.so.conf.d/openssl.conf 并执行 ldconfig
command not found新安装的命令无法识别检查 PATH 环境变量是否设置正确
sshd: no hostkeys available缺少主机密钥执行 ssh-keygen -A 自动生成
configure: error: no C compiler found缺少编译器安装 gcc 工具链

7️⃣ 总结与后续建议

✅ 总结流程图(以 CentOS 为例)

步骤内容
✅ 1安装依赖
✅ 2下载并解压 OpenSSH 源码
✅ 3编译安装 OpenSSH
✅ 4创建软链接与环境变量
✅ 5修改配置文件 /app/tools/openssh/etc/sshd_config
✅ 6配置 systemd 启动脚本
✅ 7启动服务并关闭 telnet
✅ 8可选:清理旧版本 openssh/openssl 包

📌 后续建议

  • 定期更新 OpenSSH 和 OpenSSL,保障系统安全性;
  • 使用自动化工具如 Ansible 或 SaltStack 批量部署;
  • 推荐将此文档打包为 RPM 或 Deb 包,便于复用;
http://www.xdnf.cn/news/630631.html

相关文章:

  • ollama接入图像识别大模型
  • 25. 自动化测试框架开发之日志装饰器的开发
  • JavaSE常用API之Object类:Java万物之基
  • 【C++】深入理解C++中的函数与运算符重载
  • 哈希表的实现(下)
  • 深度解析:如何精准掌握网站流量动向
  • 自动转换剪贴板中的字符串方便c#的$““符号输出
  • 2.2.1 05年T2
  • leetcode hot100刷题日记——15.岛屿数量
  • unordered_set与unordered_map实现详解剖析
  • 《100天精通Python——基础篇 2025 第20天:Thread类与线程同步机制详解》
  • PyLink 使用指南
  • AVL树简介与部分实现
  • C++篇——C++11的更新内容
  • 模型各个参数详解
  • Aciviti工作流
  • 【栈OJ题解】有效的括号
  • 6个月Python学习计划 Day 3
  • 力扣热题——查找包含给定字符的单词
  • 多模态智能体架构
  • 236.二叉树的最近公共祖先
  • Day35打卡 @浙大疏锦行
  • 深度解析NL2SQL:从语义理解到工程实践的全链路探索
  • DC-DC电路的自举电容电路原理
  • Linux(7)——进程(概念篇)
  • 介绍一下什么是反射(面试题详细讲解)
  • VBA 读取指定范围内的单元格数据,生成csv文件
  • 英语学习5.24
  • Java中是值传递还是引用传递 ?
  • vue2中el-table 实现前端分页