Compiling NSS module in Docker Alpine - fatal error: nss.h: No such file or directory
Compiling NSS module in Docker Alpine - fatal error: nss.h: No such file or directory
我构建了一个 SSH 堡垒镜像,允许客户通过反向 SSH 插入自己(由于授权密钥上的 permitopen
子句,他们都有一个分配的端口)。我通过处理所有 public 键的通用帐户实现了这一点。这些密钥通过 BASH 脚本动态检索,该脚本从 HTTP 服务器(AuthorizedKeysCommand
SSHD 选项)中提取它们。
我的问题来自堡垒的用户群,我也希望它是动态的(而不是拥有一般用户)。为此,我需要一个 HTTP NSS 模块,它不作为本机包存在,所以我必须自己构建它。
作为开始,我找到了这个项目https://github.com/gmjosack/nss_http
在根据我的需要更新源代码之前,我试图在沙盒镜像中编译它,但我遇到了这个编译错误
In file included from nss_http-passwd.c:1:
nss_http.h:8:10: fatal error: nss.h: No such file or directory
#include <nss.h>
^~~~~~~
compilation terminated.
make: *** [Makefile:20: nss_http-passwd] Error 1
我目前的形象是
FROM alpine
RUN apk update && \
apk add bash gcc autoconf automake cmake make libc-dev curl-dev jansson-dev && \
mkdir /src
WORKDIR /src
COPY . /src/
RUN make && make install
nss
和 nss-dev
Alpine 软件包链接到另一个 NSS(网络安全服务)...
如有任何帮助,我们将不胜感激!
你应该很好地安装 musl-nscd-dev
包:
apk add musl-nscd-dev
这个包提供了一个最小的 /usr/include/nss.h
头文件,它只提供 nss_status
枚举:
enum nss_status
{
NSS_STATUS_TRYAGAIN = -2,
NSS_STATUS_UNAVAIL = -1,
NSS_STATUS_NOTFOUND = 0,
NSS_STATUS_SUCCESS = 1,
NSS_STATUS_RETURN = 2
};
这足以编译nss_http-passwd.c
。
我构建了一个 SSH 堡垒镜像,允许客户通过反向 SSH 插入自己(由于授权密钥上的 permitopen
子句,他们都有一个分配的端口)。我通过处理所有 public 键的通用帐户实现了这一点。这些密钥通过 BASH 脚本动态检索,该脚本从 HTTP 服务器(AuthorizedKeysCommand
SSHD 选项)中提取它们。
我的问题来自堡垒的用户群,我也希望它是动态的(而不是拥有一般用户)。为此,我需要一个 HTTP NSS 模块,它不作为本机包存在,所以我必须自己构建它。
作为开始,我找到了这个项目https://github.com/gmjosack/nss_http
在根据我的需要更新源代码之前,我试图在沙盒镜像中编译它,但我遇到了这个编译错误
In file included from nss_http-passwd.c:1:
nss_http.h:8:10: fatal error: nss.h: No such file or directory
#include <nss.h>
^~~~~~~
compilation terminated.
make: *** [Makefile:20: nss_http-passwd] Error 1
我目前的形象是
FROM alpine
RUN apk update && \
apk add bash gcc autoconf automake cmake make libc-dev curl-dev jansson-dev && \
mkdir /src
WORKDIR /src
COPY . /src/
RUN make && make install
nss
和 nss-dev
Alpine 软件包链接到另一个 NSS(网络安全服务)...
如有任何帮助,我们将不胜感激!
你应该很好地安装 musl-nscd-dev
包:
apk add musl-nscd-dev
这个包提供了一个最小的 /usr/include/nss.h
头文件,它只提供 nss_status
枚举:
enum nss_status
{
NSS_STATUS_TRYAGAIN = -2,
NSS_STATUS_UNAVAIL = -1,
NSS_STATUS_NOTFOUND = 0,
NSS_STATUS_SUCCESS = 1,
NSS_STATUS_RETURN = 2
};
这足以编译nss_http-passwd.c
。