服务器操作指北(5)编译安装 openssh 9.3p1 with openssl3.1.0
前言
学校信网办对服务器进行了安全扫描,然后报了一大堆高危漏洞出来,仔细看了一下以后基本都是 ssh
的漏洞,apt 源
只到了 8.2p1
,想安装最新的 9.3p1
只能从源码安装了。服务器系统版本为 Ubuntu 20.04
。
- 20240626:由于服务器从
20.04
升级到了22.04
,openSSH
需要进行配套升级,所以对文章进行修订。
一、安装
1.1 编译安装 OpenSSL
由于 OpenSSL 1.1.1
将于 2023-09-11
结束支持,故而直接从源码编译 3.1.0
版本。
- 安装必要的依赖项,包括编译器、开发工具包、Zlib 开发库。
bash1234sudo apt update # build-essential 提供编译支持 # zlib1g-dev 提供 zlib 压缩库支持 sudo apt install build-essential zlib1g-dev -y
- 获取源码,并进入对应目录,最新版本可从 openssl 官网获取。
bash12345678# 下载 wget https://www.openssl.org/source/openssl-3.1.0.tar.gz # 解压 tar -zxf openssl-3.1.0.tar.gz # 进入目录 cd openssl-3.1.0/
(20240626 Update: 更换版本为 3.0.13)
bash12345678# 下载,由于 SSL 出现问题,导致无法成功验证证书,需要跳过验证 wget https://www.openssl.org/source/openssl-3.0.13.tar.gz --no-check-certificate # 解压 tar -zxf openssl-3.0.13.tar.gz # 进入目录 cd openssl-3.0.13/
- 编译安装,安装路径为
/usr/local/openssl-3.1.0
。
bash123456789# --prefix 设置安装目录 # --openssldir 设置配置和运行文件的存储目录 ./config --prefix=/usr/local/openssl-3.1.0 --openssldir=/usr/local/openssl-3.1.0 # 编译 make # install_sw 指示编译器在编译完成后安装 OpenSSL 库和头文件到系统中。 sudo make install_sw
(20240626 Update: 同步修改安装路径,旧版可保留)
bash123456789# --prefix 设置安装目录 # --openssldir 设置配置和运行文件的存储目录 ./config --prefix=/usr/local/openssl-3.0.13 --openssldir=/usr/local/openssl-3.0.13 # 编译 make # install_sw 指示编译器在编译完成后安装 OpenSSL 库和头文件到系统中。 sudo make install_sw
- 配置动态库,编译后的版本需要动态库支持才可以正常运行。
bash1234567# 添加动态库配置文件 sudo vi /etc/ld.so.conf.d/openssl-3.1.0.conf # 加入以下内容 /usr/local/openssl-3.1.0/lib64 # 刷新动态库,使配置生效 `sudo ldconfig`
(20240626 Update: 同步添加动态库路径,旧版可保留)
bash1234567# 添加动态库配置文件 sudo vi /etc/ld.so.conf.d/openssl-3.0.13.conf # 加入以下内容 /usr/local/openssl-3.0.13/lib64 # 刷新动态库,使配置生效 `sudo ldconfig`
- 验证,若未配置动态库,此命令会报依赖异常,后续
openssh
编译也会报错。
bash1/usr/local/openssl-3.1.0/bin/openssl version
(20240626 Update: 同步添加动态库路径,旧版可保留)
bash1/usr/local/openssl-3.0.13/bin/openssl version
1.2 编译安装 OpenSSH
在安装过程中要保证 ssh
连接不会中断,否则可能存在无法连接的问题,需要通过 ipmi
进行维护。
- 备份现有配置,一般情况下配置会复用。
bash12cp /etc/ssh/sshd_config sshd_config.backup cp /etc/pam.d/sshd sshd.backup
- 清理现有 apt 安装的
openssh-server
版本。
bash123sudo apt remove openssh-server # 可选步骤,清理不需要的安装包,默认清理的应该是 ncurses-term openssh-sftp-server ssh-import-id sudo apt autoremove
(20240626 Update: 清理之前手动安装的版本)
bash1234# 进入目录 cd openssh-9.3p1 # 清理旧版本 sudo make uninstall
- 安装必要的依赖项,包括编译器、开发工具包、OpenSSL 开发库、Zlib 开发库和 PAM 开发库。
(20240626 Update: 该步骤无变化)
bash12345678sudo apt update # build-essential 提供编译支持 # libssl-dev 提供基本的 1.1.1f 版本支持,后续会替换为 3.1.0 # zlib1g-dev 提供 zlib 压缩库支持 # libpam0g-dev 提供 PAM 支持 # libkrb5-dev 提供 Kerberos 5 协议支持 # libgssglue-dev 提供 GSSAPI 支持 sudo apt install build-essential libssl-dev zlib1g-dev libpam0g-dev libkrb5-dev libgssglue-dev -y
- 获取源码,并进入对应目录,最新版本可从 openssh 官网获取。
bash12345678# 下载 wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz # 解压 tar -xzf openssh-9.3p1.tar.gz # 进入目录 cd openssh-9.3p1
(20240626 Update: 下载当前最新版)
bash12345678# 下载,由于 SSL 出现问题,导致无法成功验证证书,需要跳过验证 wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz --no-check-certificate # 解压 tar -zxf openssh-9.7p1.tar.gz # 进入目录 cd openssh-9.7p1
- 编译安装,安装路径为
/usr
,配置路径复用为/etc/ssh
。
bash1234567891011121314# --prefix 指定安装路径 # --sysconfdir 指定配置信息路径 # --with-privsep-path 指定特权分离路径 # --with-ssl-dir 指定 ssl 库路径,启用 openssl 支持,若想使用系统默认版本,请将路径修改为 /usr/include/openssl # --with-pam 启用 PAM 支持 # --with-zlib 启用 zlib 支持 # --with-kerberos5 启用 gssapi 支持 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-privsep-path=/var/empty --with-ssl-dir=/usr/local/openssl-3.1.0 --with-pam --with-zlib --with-kerberos5 # 编译 openssh-server make # 安装 sudo make install
(20240626 Update: 安装命令仅更新 openssl 路径)
bash1234567891011121314# --prefix 指定安装路径 # --sysconfdir 指定配置信息路径 # --with-privsep-path 指定特权分离路径 # --with-ssl-dir 指定 ssl 库路径,启用 openssl 支持,若想使用系统默认版本,请将路径修改为 /usr/include/openssl # --with-pam 启用 PAM 支持 # --with-zlib 启用 zlib 支持 # --with-kerberos5 启用 gssapi 支持 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-privsep-path=/var/empty --with-ssl-dir=/usr/local/openssl-3.0.13 --with-pam --with-zlib --with-kerberos5 # 编译 openssh-server make # 安装 sudo make install
- 验证。
bash12ssh -V > OpenSSH_9.3p1, OpenSSL 3.1.0 14 Mar 2023
(20240626 Update: 更新后新版内容如下)
bash12ssh -V > OpenSSH_9.7p1, OpenSSL 3.0.13 30 Jan 2024
- 配置服务,手动编译安装后,需要重新配置服务。
(20240626 Update: 该步骤无变化)
bash123456789101112131415161718192021222324252627282930313233## 删除旧有符号链接 sudo rm /etc/systemd/system/sshd.service ## 解除服务锁定 sudo systemctl unmask ssh.service ## 配置自启动 sudo vi /etc/systemd/system/sshd.service ## 添加以下内容 [Unit] Description=OpenSSH Daemon After=network.target auditd.service [Service] ExecStart=/usr/sbin/sshd -D ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=always [Install] WantedBy=multi-user.target ## 配置 sftp sudo vi /etc/ssh/sshd_config ## 修改以下内容 ## 将 /usr/lib/openssh/sftp-server 改为 /usr/libexec/sftp-server Subsystem sftp /usr/libexec/sftp-server ## 启动 sudo systemctl daemon-reload sudo systemctl enable sshd.service sudo systemctl start sshd.service sudo systemctl status sshd.service
参考
本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我的个人天地!