首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过木偶覆盖/etc/ssh/sshd_config.d文件夹中的sshd_config默认值

如何通过木偶覆盖/etc/ssh/sshd_config.d文件夹中的sshd_config默认值
EN

Stack Overflow用户
提问于 2022-12-02 11:20:33
回答 1查看 20关注 0票数 0

我已经安装了下面版本的openssh rpms

代码语言:javascript
运行
复制
openssh-clients-8.0p1-13.el8.x86_64
openssh-8.0p1-13.el8.x86_64
openssh-server-8.0p1-13.el8.x86_64

在默认的sshd_config文件中,我看不到其中提到的“包含”指令。grep -nr "Include“/etc/ssh/sshd_config不返回任何内容。另外,"/etc/ssh/sshd_config.d“不是由rpm创建的。因此,我所做的是创建/etc/ssh/sshd_config.d目录,并在/etc/ssh/sshd_config的最后一行中添加"Include /etc/ssh/sshd/*..conf“。我通过在puppet模块中将路径参数设置为“/etc/sshd_config.d/定制_sshd_config.conf”来重写默认的sshd_config文件。傀儡的ssh模块只需获取sshd_config文件的副本,并根据傀儡配置替换行。有了这一点,我就面临着许多sshd_config配置的冲突和重复值等问题。其中一个例子是:

代码语言:javascript
运行
复制
sshd_config:
HostKey /etc/ssh/ssh_host_rsa_key # duplicate
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
Subsystem sftp /usr/libexec/openssh/sftp-server 


sshd_config.d/custom_sshd_config.conf:
HostKey /etc/ssh/ssh_host_rsa_key  # duplicate (gets added by default puppet ssh module itself)
Subsystem sftp /usr/libexec/openssh/sftp-server # When Subsystem in defined in both the places, 
                                                # sshd service is failed to start, So I am 
                                                # manually commenting this out in one file

sshd -T输出有重复的:

代码语言:javascript
运行
复制
...
hostkey /etc/ssh/ssh_host_rsa_key
hostkey /etc/ssh/ssh_host_ecdsa_key
hostkey /etc/ssh/ssh_host_ed25519_key
hostkey /etc/ssh/ssh_host_rsa_key
...

在顶部添加包含指令也不能解决我的问题。我知道sshd手册的说明。

在sshd中使用每个参数的第一个获得的值:只有在存在冲突的参数时,顺序才会起作用,就像使用每个参数的第一个获得的值一样。

另外,通过傀儡直接重写sshd_config文件本身将解决这个复制/冲突问题,但我需要维护一个单独的custom_sshd_config文件,而不直接覆盖原始sshd_config文件。

我期望的是“包含指令文件应该表现为默认sshd_config的重写”。是否有任何方法可以在傀儡中实现自动化,就像在custom_sshd_config文件中重写sshd配置时一样,该配置需要在默认sshd_config中进行注释,以便在实际中被重写。如果有人帮我解决这个问题,那将是很有帮助的。提前谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 19:28:07

在默认的sshd_config文件中,我看不到其中提到的“包含”指令。grep -nr "Include“/etc/ssh/sshd_config不返回任何内容。另外,"/etc/ssh/sshd_config.d“不是由rpm创建的。

我不觉得这特别令人惊讶。sshd_config的逻辑内容对顺序和上下文都是敏感的,所以尽管有一个Include指令,但是使用它来提供通用的sshd配置文件并不能很好地工作。我可以看到一种更有针对性的方法,其中可能包括插入文件,但并不是真正想要做的事情。

尽管如此..。

我所做的是创建/etc/ssh/sshd_config.d目录,并在/etc/ssh/sshd_config的最后一行中添加"Include /etc/ssh/sshd/*..conf“。

..。当然,如果你想的话你可以这么做。但是这个..。

我通过在puppet模块中将sshd_config_path参数设置为“/etc/sshd_config.d/定制_sshd_config.conf”来重写默认的sshd_config文件。

..。似乎既歪曲事实又不明智。首先,不是,您没有覆盖默认配置文件。这意味着sshd将使用您指定的配置文件而不是/etc/sshd/sshd_config,但这显然没有发生。你所做的只是简单地告诉木偶去管理一个不同的文件。

在第二种情况下,这样做完全是在乞求你所观察到的问题:重复/不一致的配置。您正在管理etc/sshd_config.d/custom_sshd_config.conf,就好像它是一个完整的sshd配置文件(因为模块就是这样做的),但是使用它的唯一方法就是将它包含在主配置文件中。

当您可以直接管理常规配置文件时,您甚至不清楚如何从中获得任何好处。您说您不能这样做,但您已经在这样做了,因为您在其中放置了一个没有由RPM提供的Include指令。

我期望的是“包含指令文件应该表现为默认sshd_config的重写”。是否有任何方法可以在傀儡中实现自动化,就像在custom_sshd_config文件中重写sshd配置时一样,该配置需要在默认sshd_config中进行注释,以便在实际中被重写。

您使用的模块(请参见下面的内容)不会这样做,我也不明白为什么会这样。如果您无论如何都要修改主配置文件,那么为什么不将您想要的配置指令放在那里呢?或者,如果您确实不能修改该文件,那么为什么要提出一种涉及修改它(进一步)的方法?

推动前进的一种方法是确实更改sshd在其主配置文件中使用的文件。您可以通过管理sshd的systemd单元文件在EL8上这样做,以便在它使用的sshd命令行中添加一个适当的-f选项。

或者,如果您可以修改,但仍然需要插入文件,那么您可以考虑从主配置文件中删除除了Include指令之外的所有内容,否则就会像已经做的那样继续下去。

但是如果您想要精确地描述,那么您需要编写自己的模块来处理它。

但是,说到模块,您链接到的模块是一个维护较少且很少使用的大受欢迎的分叉傀儡-由古涅卡特批准。在这一点上,两者是不同步的。除非您需要的东西不是在ghoneycutt的版本,我强烈建议切换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74654971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档