错误描述:

因管理要求要将openssh升级到最新版,所以手动下载了openssh 9.3.2p2的版本,编译安装后再重新启动sshd时sshd状态一直处于不断的重启中,systemctl status sshd查看一直处于activating(auto-restart)状态,sshd.service前面显示灰色,不正常。

解决方法

1、安装systemd-devel(sd_notify函数依赖)

yum install systemd-devel

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

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下

 这样默认可以覆盖原有的

configure --prefix=/usr --sysconfdir=/etc/ssh

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。