2、进入源码目录,编辑sshd.c文件
大约在2099行左右进行如下添加:
sd_notify(0, "READY=1");
/* Accept a connection and return in a forked child */
server_accept_loop(&sock_in, &sock_out,
&newsock, config_s);
并在头部include部分添加头文件:
#include <systemd/sd-daemon.h>
3、编辑Makefile文件
修改第51行, LIBS=, 原来这个为空,添加如下,最重要的是后面这个 -lsystemd:
LIBS=-lcrypto -ldl -lutil -lz -lcrypt -lresolv -lsystemd
4、编译安装
make & make install
5、重启sshd服务
systemctl reload sshd
systemctl restart sshd
编译安装openssh-9.3.2p2常见错误解决
在编译安装OpenSSH的过程中,常见的错误及解决方法如下:
- 缺少必要的依赖库:在编译安装OpenSSH之前,需要确认系统中已安装了必要的依赖库,例如OpenSSL、Zlib等。如果缺少依赖库,可以通过包管理器安装或下载源代码手动编译安装。
- 配置文件错误:在执行
./configure
命令时,可能会遇到配置文件错误。这可能是由于系统缺少一些必要的功能或库。可以通过查看错误信息以及配置文件中的选项来解决问题。需要确保配置文件中的选项正确,并安装相应的库以支持所需的功能。 - 编译错误:在执行
make
命令时,可能会遇到编译错误。这可能是由于源代码错误、编译器版本不兼容等原因导致的。可以通过查看错误信息来定位问题,并根据错误信息采取相应的解决方法。有时可能需要升级编译器或更新源代码。 - 安装错误:在执行
make install
命令时,可能会遇到安装错误。这可能是由于权限问题或目标目录不存在等原因导致的。可以通过查看错误信息来解决问题,并确保具有足够的权限执行安装命令。如果目标目录不存在,可以手动创建目录并设置正确的权限。
常见依赖库
- OpenSSL:OpenSSH依赖于OpenSSL库进行加密和身份验证。在CentOS 9上,可以使用以下命令安装OpenSSL库:
sudo dnf install openssl-devel
- zlib:OpenSSH还依赖于zlib库用于数据压缩。在CentOS 9上,可以使用以下命令安装zlib库:
sudo dnf install zlib-devel
- libcrypto和libssl:这两个库是OpenSSL的一部分,但在某些情况下,也需要单独安装。在CentOS 9上,可以使用以下命令安装这两个库:
sudo dnf install libcrypto-devel libssl-devel
以上是在CentOS 9上安装OpenSSH所需的一些常见依赖库。请注意,具体依赖库可能因不同的系统版本和配置而有所差异,可以根据实际情况进行调整。
常见编译错误:
- 错误:未找到zlib库 解决方案:确保系统中安装了zlib库,并在编译时指定zlib库的路径。
- 错误:未找到OpenSSL库 解决方案:确保系统中安装了OpenSSL库,并在编译时指定OpenSSL库的路径。
- 错误:未找到libcrypto库 解决方案:确认系统中安装了OpenSSL并且libcrypto库存在,并在编译时指定libcrypto库的路径。
- 错误:未找到libssl库 解决方案:确认系统中安装了OpenSSL并且libssl库存在,并在编译时指定libssl库的路径。
- 错误:未找到pam库 解决方案:确保系统中安装了pam库,并在编译时指定pam库的路径。
- 错误:未找到libkrb5库 解决方案:确保系统中安装了libkrb5库,并在编译时指定libkrb5库的路径。
- 错误:未找到libwrap库 解决方案:确保系统中安装了libwrap库,并在编译时指定libwrap库的路径。
- 错误:未找到liblzma库 解决方案:确保系统中安装了liblzma库,并在编译时指定liblzma库的路径。
- 错误:未找到libpcre库 解决方案:确保系统中安装了libpcre库,并在编译时指定libpcre库的路径。
- 错误:未找到libgssapi_krb5库 解决方案:确保系统中安装了libgssapi_krb5库,并在编译时指定libgssapi_krb5库的路径。
安装目录配置问题
编译时可以指定目录,否则默认安装在/usr/local下面,config文件也是/usr/local/etc下