首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sshd:"no hostkey alg“修复了,但仍然很混乱

sshd:"no hostkey alg“修复了,但仍然很混乱
EN

Unix & Linux用户
提问于 2021-11-28 22:42:19
回答 2查看 25.5K关注 0票数 6

显然,Fedora 35没有在HostKeyAlgorithms或PubkeyAcceptedKeyTypes中列出ssh-rsa,因此试图从旧的CentOS 6计算机中列出ssh会产生一个错误:

代码语言:javascript
运行
复制
$ ssh as1s16.intra.corp.us
no hostkey alg

因此,我在包含in /etc/ssh/sshd_config之后添加了选项:

代码语言:javascript
运行
复制
Include /etc/ssh/sshd_config.d/*.conf

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

但同样的错误。然后我像这样运行sshd:

代码语言:javascript
运行
复制
# /usr/sbin/sshd -ddd
...
debug3: /etc/ssh/sshd_config:20 setting HostKeyAlgorithms +ssh-rsa
debug3: /etc/ssh/sshd_config:21 setting PubkeyAcceptedKeyTypes +ssh-rsa
...
debug1: SELinux support disabled [preauth]
...
debug3: append_hostkey_type: ssh-rsa key not permitted by HostkeyAlgorithms [preauth]
debug1: list_hostkey_types: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 [preauth]

但同样的错误。然后我删除了运行sshd的选项如下:

代码语言:javascript
运行
复制
# /usr/sbin/sshd -ddd -oHostKeyAlgorithms=ssh-rsa

而且起作用了。我能够从CentOS 6客户端成功地执行ssh。

因此,我将这些选项放在包括:

代码语言:javascript
运行
复制
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

# To modify the system-wide sshd configuration, create a  *.conf  file under
#  /etc/ssh/sshd_config.d/  which will be automatically included below
Include /etc/ssh/sshd_config.d/*.conf

而且起作用了。

为什么我需要把这些指令放在包含之前?难道他们不应该去重写缺省值吗?

EN

回答 2

Unix & Linux用户

发布于 2021-11-29 07:21:11

虽然这种措辞不太清楚,但我怀疑config.d/*目录允许为特定客户/用户或传入的界面/端口(S)提供单独的配置文件,而不是“系统范围内的配置文件”。这类似于使用apache/httpd和nginx中的sites/*目录(可能还有更多)允许单独配置每个虚拟主机或应用程序,但仍然都由一台服务器支持。查看这些文件,看看它们是否包含匹配行(后面应该是其他真正的行=不匹配、注释或空白),这意味着它们只适用于特定的连接,而不是全部。

包括是文本性的。如果你有文件

代码语言:javascript
运行
复制
blich
Include file*
blech

如果blich和blech不包含匹配行,但至少有一些文件(S)这样做(Es),那么blech实际上就成为了文件连接后的最后一个匹配块的一部分--因此,blech中的设置仅用于满足这些匹配条件的传入连接(S),而您的测试连接显然并不满足这些条件。

如果您想要SSHD设置是“全局的”,您必须将它们放在任何匹配线(S)之前,如果包含的‘文件’“包含”,这意味着您必须将全局设置放在“包括”之前。

配置文件中的所有设置都覆盖程序中的默认值。在配置文件中放置多次相同的设置(在任何匹配块之前/外部)使用的是第一个,而不是最后一个,所以重写早期的' default‘(如果它在文件中则根本不是默认设置)的想法是行不通的。只有在满足条件(S)的匹配块中,才会覆盖第一个匹配块。

PS:这大概是因为Fedora在警告(威胁?)之后是流血边缘和OpenSSH最近终于改变了这一点。从一年半前的8.2年起,他们就会这么做。

票数 0
EN

Unix & Linux用户

发布于 2023-03-16 14:14:55

我用:

代码语言:javascript
运行
复制
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

在/etc/ssh/ sshd _config中重新启动sshd。

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

https://unix.stackexchange.com/questions/679451

复制
相关文章

相似问题

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