OpenSSH 9.9p2 编译安装全流程指南
🔐 OpenSSH 9.9p2 编译安装全流程指南
✅ 适用系统:麒麟 v10 SP3、Ubuntu 22.04 LTS、CentOS 7.9
📝 目的:从源码编译安装 OpenSSH 9.9p2 并升级 OpenSSL 至 1.1.1w 版本
🧰 适用于:系统管理员、安全加固、漏洞修复场景
📚 目录
- 概述
- 通用准备工作
- 麒麟 v10 SP3 安装流程
- Ubuntu 22.04 LTS 安装流程
- CentOS 7.9 安装流程
- 常见问题与解决方法
- 总结与后续建议
1️⃣ 概述
本文档提供在以下三种 Linux 发行版中编译安装 OpenSSH 9.9p2 的完整操作流程,并附带 OpenSSL 升级、telnet 临时连接配置、systemd 启动脚本等实用操作说明:
系统名称 | 版本信息 | 是否已验证 |
---|---|---|
麒麟 Linux | Kylin v10 SP3 | ✅ 是 |
Ubuntu | 22.04 LTS | ✅ 是 |
CentOS | 7.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 包,便于复用;