OpenSSH离线升级版本

场景:在和外网隔绝的服务器上升级openSSH。如果是在有网的情况下升级,可以使用yum或dnf包管理器命令升级,如果是在离线环境或者yum仓库提供的版本太低,不足以满足需求,就需要手动安装。

一、先下载安装所需的包

需要的包:openSSH、openSSL、zlib;这里下载的版本为:
 

openssh-10.0p1.tar.gz、openssl-1.1.1q.tar.gz、zlib-1.3.1.tar.gz

这里的openssl没有使用最新版本,因为最新版本编译过程中需要的新依赖比较多,在离线环境中编译引入一大堆依赖非常不方便,所以直接使用openssl-1.1.1q版本,当然了,版本太低也不行,如果openSSL版本过低,那就编译不了高版本的openSSH。

1、下载openSSL

下载官网地址:Downloads | OpenSSL Library

2、下载openSSh
下载官网地址:Index of /pub/OpenBSD/OpenSSH/portable/

3、下载
下载官网地址:zlib Home Site

二、上传到目标服务器后编译安装

1. 安装OpenSSL
 

ps: 编译安装过程中可以会报错,比如还需要其他的依赖,需要根据提示下载安装需要的依赖。

#解压文件
tar -zxf openssl-1.1.1q.tar.gz -C /opt/

#进入目录
cd /opt/openssl-1.1.1q

#编译配置openssl安装目录
./config --prefix=/usr/local/openssl

#安装
make && make install

#备份更新openssl
mv /usr/bin/openssl /usr/bin/openssl_bak

#复制openssl文件到/usr/bin/下
cp /usr/local/openssl/bin/openssl /usr/bin/

#添加动态链接库数据
echo ‘/usr/local/openssl/lib64/’ >> /etc/ld.so.conf

#更新动态链接库
ldconfig

#进行验证
openssl version

# 大概率会报错

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory


openssl: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory

报错处理,创建软连接

# 创建软连接
ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1

ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

 ps: 不同版本的openssl,报错提到的 libssl.so.1.1 和 libcrypto.so.1.1 版本也不一样,需要根据实际情况替换版本,例如可能是 libssl.so.3 和 libcrypto.so.3,那么创建软连接的文件版本也得跟着变化。

# 更新链接库
ldconfig

# 再次验证
openssl version

# 验证结果:
OpenSSL 1.1.1q  5 Jul 2022

openssl安装完成。

2. 安装OpenSSH

1.安装zlib,服务器无法联网,离线安装,安装包


tar -zxvf zlib-1.3.1.tar.gz -C /opt/

cd /opt/zlib-1.3.1

./configure --prefix=/usr/local/zlib

make && make install`

2.安装openssh

# 备份配置目录
cp -r /etc/ssh /root/ssh_backup

# 备份PAM配置
cp /etc/pam.d/sshd /root/sshd_pam.backup

#解压
tar -zxvf openssh-10.0p1.tar.gz -C /opt/


cd /opt/openssh-10.0p1

# 配置编译相关信息
./configure \
  --prefix=/usr \
  --sysconfdir=/etc/ssh \
  --with-ssl-dir=/usr/local/openssl \
  --with-zlib=/usr/local/zlib \
  --with-zlib-include=/usr/local/zlib/include


## 注:  --with-ssl-dir 需要对应 openssl的安装目录

# 编译 安装
make && make install

# 查看版本
ssh -V

# 显示版本信息
OpenSSH_10.0p2, OpenSSL 1.1.1q  5 Jul 2022

# 若需要重启或启动

# 重启服务
sudo systemctl restart sshd
# 如果服务未运行,则启动
sudo systemctl start sshd

可能的报错:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Unable to load host key "/etc/ssh/ssh_host_rsa_key": bad permissions
Unable to load host key: /etc/ssh/ssh_host_rsa_key
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Unable to load host key "/etc/ssh/ssh_host_ecdsa_key": bad permissions
Unable to load host key: /etc/ssh/ssh_host_ecdsa_key
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Unable to load host key "/etc/ssh/ssh_host_ed25519_key": bad permissions
Unable to load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
make: [check-config] Error 1 (ignored)

这个错误是由于 OpenSSH 对密钥文件的权限要求非常严格,/etc/ssh/ssh_host_rsa_key 相关文件的权限设置过于宽松(0640),而 OpenSSH 要求私钥文件必须不能被其他用户读取(通常设置为 0600)。

解决:
修复现有密钥文件的权限

# 修复现有密钥文件的权限
sudo chmod 600 /etc/ssh/ssh_host_*_key

安装完成。

要下载或安装 OpenSSH 10.0P2 的 RPM 包,可以按照以下方法操作: ### 下载 OpenSSH 10.0P2 RPM 包 可以通过访问公共的软件包存储库来查找和下载所需的 RPM 包。以下是几个可能的方法: #### 方法一:通过官方网站或其他可信资源 OpenSSH 并未直接提供特定版本的 RPM 包,通常需要从发行版的官方仓库或者第三方仓库中找到对应的 RPM 包。例如 Fedora 或 RHEL/CentOS 提供的相关仓库可能会有较新版本OpenSSH。 对于 OpenSSH 10.0P2 版本,建议访问以下链接寻找适合的 RPM 包: - **Fedora Project**: https://src.fedoraproject.org/rpms/openssh[^5] - **CentOS Vault**: http://vault.centos.org/ 如果无法在线找到预编译的 RPM 包,则可以选择从源码构建 RPM 包。 --- ### 构建自定义 RPM 包 当找不到现成的 RPM 包时,可以从源代码手动创建 RPM 包。以下是具体步骤: #### 步骤概述 1. 获取 OpenSSH 源代码。 2. 使用 `rpmbuild` 工具重新打包为 RPM 格式的二进制文件。 #### 具体实现 ##### 1. 准备开发环境 确保系统已经安装必要的工具链: ```bash sudo yum groupinstall "Development Tools" sudo yum install rpm-build redhat-rpm-config gcc make perl openssl-devel zlib-devel pam-devel ``` ##### 2. 下载 OpenSSH 源代码 前往 OpenSSH 官方网站下载指定版本的源代码压缩包: ```bash wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-10.0p2.tar.gz tar -xzvf openssh-10.0p2.tar.gz cd openssh-10.0p2 ``` ##### 3. 创建 SPEC 文件 SPEC 文件描述如何将源代码转换为 RPM 包。可以根据现有模板修改生成一个新的 SPEC 文件。假设已有基本框架如下所示: ```spec Name: openssh Version: 10.0p2 Release: 1%{?dist} Summary: The portable version of OpenSSH License: BSD URL: https://www.openssh.com/ Source0: %{name}-%{version}.tar.gz BuildRequires: gcc, make, perl, openssl-devel, zlib-devel, pam-devel %description The OpenSSH suite provides secure encrypted communications between two untrusted hosts over an insecure network. %prep %setup -q %build ./configure --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-pam \ --with-md5-passwords make %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install %files %defattr(-,root,root,-) /usr/bin/* /etc/ssh/* %changelog * Mon Oct 16 2023 Your Name <your.email@example.com> - 10.0p2-1 - Initial build for OpenSSH 10.0p2. ``` 保存此文件为 `openssh.spec`。 ##### 4. 执行 rpmbuild 命令 运行以下命令以生成 RPM 包: ```bash mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} cp openssh-10.0p2.tar.gz ~/rpmbuild/SOURCES/ cp openssh.spec ~/rpmbuild/SPECS/ rpmbuild -ba ~/rpmbuild/SPECS/openssh.spec ``` 成功完成后,在 `~/rpmbuild/RPMS/x86_64/` 路径下即可找到生成的 RPM 包。 --- ### 安装 RPM 包 一旦获得 RPM 包,可以直接使用 `yum` 或 `rpm` 命令完成安装: ```bash sudo yum localinstall /path/to/openssh-10.0p2*.rpm # 或者 sudo rpm -Uvh /path/to/openssh-10.0p2*.rpm ``` 注意:在某些情况下,可能需要先解决依赖关系问题。 --- ### 验证安装 验证是否正确安装了目标版本: ```bash sshd -v ``` 预期输出应显示版本号为 `OpenSSH_10.0p2`[^6]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值