编译安装openssl-1.1.1和openssh-9.4
1、安装 openssl-1.1.1
先处理下opensll的版本,以免编译安装Openssh环境异常:
yum remove openssl
cd /opt
wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
tar -zxvf openssl-1.1.1n.tar.gz
cd openssl-1.1.1n/
./config --prefix=/opt/openssl # 指定 OpenSSL 的安装目录为 /opt/openssl
make depend
make && make install
ln -sf /opt/openssl/bin/openssl /usr/bin/openssl #需要默认在/usr/bin/下创建openssl的软连接
echo "/opt/openssl/lib/" >> /etc/ld.so.conf #需要在环境变量中增加这一行代码
ldconfig -v #使配置生效
openssl version
配置环境变量,在末尾加入代码 echo "/opt/openssl/lib/" >> /etc/ld.so.conf
2、编译安装Openssh高版本(升级openssh版本)
此操作不适合远程ssh登录使用,一般情况下要在本地控制台操作(如果已经yum安装过ssh,需要先卸载老版本)
yum remove openssh
cd /opt
wget https://mirrors.aliyun.com/openssh/openssh-9.4.tar.gz
tar -zxvf openssh-9.4.tar.gz
cd /opt/openssh-9.4
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/opt/openssl --with-pam
make
make install
--prefix=/usr/local/openssh
:指定安装目录为/usr/local/openssh
。这样,编译后的二进制文件、配置文件等将被安装到这个目录。--sysconfdir=/etc/ssh
:指定配置文件存放的目录为/etc/ssh
。--with-ssl-dir=/opt/openssl
:指定 OpenSSL 的安装目录为/opt/openssl
。这是告诉 OpenSSH 在编译和链接时使用指定目录下的 OpenSSL 库。--with-pam
:启用对 PAM (Pluggable Authentication Modules) 的支持,允许使用 PAM 进行身份验证(安全基线配置)。
OpenSSH安装路径解读:
通过 yum
安装的 OpenSSH 通常会将文件安装到系统默认的目录结构。以下是一般情况下 OpenSSH 安装的主要目录:
-
可执行文件: 安装的 OpenSSH 可执行文件通常位于
/usr/bin/
目录下。 -
配置文件: 配置文件通常位于
/etc/ssh/
目录下。主要的配置文件是sshd_config
(SSH 服务器配置)和ssh_config
(SSH 客户端配置)。 -
密钥文件: SSH 密钥文件通常位于
/etc/ssh/
目录下,包括主机密钥、用户密钥等。 -
系统服务文件: 系统服务文件通常位于
/usr/lib/systemd/system/
目录下。例如,sshd.service
文件描述了 OpenSSH 服务器的 systemd 服务。
如果您想查看已安装的文件的详细信息,您可以使用以下命令:rpm -ql openssh
root@test-t01:/opt#rpm -ql openssh
/etc/ssh
/etc/ssh/moduli
/usr/bin/ssh-keygen
/usr/libexec/openssh
/usr/libexec/openssh/ctr-cavstest
/usr/libexec/openssh/ssh-keysign
/usr/share/doc/openssh-7.4p1
/usr/share/doc/openssh-7.4p1/CREDITS
/usr/share/doc/openssh-7.4p1/ChangeLog
/usr/share/doc/openssh-7.4p1/INSTALL
/usr/share/doc/openssh-7.4p1/OVERVIEW
/usr/share/doc/openssh-7.4p1/PROTOCOL
/usr/share/doc/openssh-7.4p1/PROTOCOL.agent
/usr/share/doc/openssh-7.4p1/PROTOCOL.certkeys
/usr/share/doc/openssh-7.4p1/PROTOCOL.chacha20poly1305
/usr/share/doc/openssh-7.4p1/PROTOCOL.key
/usr/share/doc/openssh-7.4p1/PROTOCOL.krl
/usr/share/doc/openssh-7.4p1/PROTOCOL.mux
/usr/share/doc/openssh-7.4p1/README
/usr/share/doc/openssh-7.4p1/README.dns
/usr/share/doc/openssh-7.4p1/README.platform
/usr/share/doc/openssh-7.4p1/README.privsep
/usr/share/doc/openssh-7.4p1/README.tun
/usr/share/doc/openssh-7.4p1/TODO
/usr/share/licenses/openssh-7.4p1
/usr/share/licenses/openssh-7.4p1/LICENCE
/usr/share/man/man1/ssh-keygen.1.gz
/usr/share/man/man8/ssh-keysign.8.gz
root@test-t01:/opt#
这将列出 openssh
软件包中安装的所有文件及其路径。根据不同的系统版本和软件包版本,目录结构可能会有轻微的变化,因此请根据您的系统具体情况进行适当的调整。
这是另一种操作方式(不卸载旧版本,可远程操作。不保证是否靠谱,仅供参考)
升级 OpenSSL 和 OpenSSH 到新版本并确保系统中不会存在多个版本可能涉及一些详细的步骤。以下是大致的流程:
1. 升级 OpenSSL
-
备份系统: 在进行任何更改之前,请确保备份关键数据和系统。
-
下载 OpenSSL 源代码:
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
-
解压缩源代码:
tar -zxvf openssl-1.1.1l.tar.gz cd openssl-1.1.1l
-
配置、编译和安装 OpenSSL:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib make sudo make install
-
更新动态链接库缓存:
sudo ldconfig
2. 升级 OpenSSH
-
备份系统: 再次确保备份关键数据和系统。
-
下载 OpenSSH 源代码:
wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz
-
解压缩源代码:
tar -zxvf openssh-9.4p1.tar.gz cd openssh-9.4p1
-
配置、编译和安装 OpenSSH,指定 OpenSSL 路径:
./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/openssl --with-pam make sudo make install
-
备份原有的 OpenSSH 配置文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config_backup
-
重启 ssh 服务:
sudo systemctl restart sshd
3. 验证和清理
-
验证版本:
/usr/local/openssh/bin/ssh -V
这应该显示您新安装的 OpenSSH 的版本信息。
-
验证 OpenSSL 版本:
/usr/local/openssl/bin/openssl version
这应该显示您新安装的 OpenSSL 的版本信息。
-
清理: 如果一切都正常,您可以选择删除旧版本的 OpenSSL 和 OpenSSH。首先,确保一切工作正常。
-
更新库链接:
sudo ldconfig
请注意,这些步骤可能因系统和软件版本而异。在进行这些更改之前,请确保已经理解了潜在的影响,并在测试环境中进行测试。
清理旧版本OpenSSL :
确保避免与系统默认版本的 OpenSSL 冲突,您需要确保在运行 OpenSSL 命令时使用新安装的 OpenSSL 路径。以下是一些建议的步骤:
-
设置环境变量:
在新版本 OpenSSL 安装后,您可以设置
PATH
环境变量,以便系统可以找到新版本的 OpenSSL 执行文件。将新 OpenSSL 安装目录的bin
子目录添加到PATH
:export PATH=/usr/local/openssl/bin:$PATH
这样,系统将首先在
/usr/local/openssl/bin
中查找可执行文件,而不是系统默认路径。 -
验证 OpenSSL 版本:
在设置好环境变量后,通过运行以下命令验证系统是否使用新版本的 OpenSSL:
openssl version
这应该显示您新安装的 OpenSSL 的版本信息。
-
确认配置文件路径:
如果您的应用程序或服务需要 OpenSSL,确保它们引用新版本的 OpenSSL 路径。通常情况下,应用程序将查找环境变量或配置文件以确定要使用的 OpenSSL 路径。
如果有需要,您还可以在运行 OpenSSL 命令时使用绝对路径来确保使用正确的版本。
-
更新库链接:
在新版本的 OpenSSL 安装后,执行以下命令,以便系统能够找到新的共享库:
sudo ldconfig
这将更新系统的共享库缓存。
通过上述步骤,您应该能够成功使用新版本的 OpenSSL,而不与系统默认版本产生冲突。在使用新版本 OpenSSL 的过程中,确保应用程序和服务配置正确,以便它们能够找到并使用新版本。
卸载旧版本OpenSSH:
-
确保新版本 OpenSSH 正常运行: 在卸载旧版本之前,请确保新版本的 OpenSSH 能够正常工作。验证系统中的其他应用程序和服务是否与新版本的 OpenSSH 兼容。
-
备份系统: 在进行任何卸载操作之前,强烈建议对系统进行完整备份。这样,如果出现问题,您可以还原系统到升级前的状态。
-
查找旧版本 OpenSSH 的安装位置: 使用
rpm
或其他包管理工具,查找和记录系统上安装的旧版本 OpenSSH 的软件包名。例如:rpm -qa | grep openssh
这将列出安装在系统上的 OpenSSH 软件包。
-
卸载旧版本 OpenSSH: 使用包管理工具卸载旧版本 OpenSSH。例如,如果您使用的是
yum
,可以运行:sudo yum remove openssh-old-version-package
请替换
openssh-old-version-package
为您找到的旧版本 OpenSSH 软件包的实际名称。 -
清理依赖关系: 运行包管理工具的清理命令,以确保系统不再依赖于已卸载的旧版本 OpenSSH:
sudo yum autoremove
-
验证新版本 OpenSSH: 再次验证新版本的 OpenSSH 是否正常运行。确保系统和应用程序仍然能够正确使用新版本。
-
更新库链接: 执行以下命令,以确保系统的共享库缓存已更新:
sudo ldconfig
上述步骤主要是一个通用的指南。在执行这些步骤之前,请确保您理解操作的风险,并在测试环境中进行操作以确保系统的稳定性。