显然,Fedora 35没有在HostKeyAlgorithms或PubkeyAcceptedKeyTypes中列出ssh-rsa,因此试图从旧的CentOS 6计算机中列出ssh会产生一个错误:
$ ssh as1s16.intra.corp.us
no hostkey alg
因此,我在包含in /etc/ssh/sshd_config之后添加了选项:
Include /etc/ssh/sshd_config.d/*.conf
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
但同样的错误。然后我像这样运行sshd:
# /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的选项如下:
# /usr/sbin/sshd -ddd -oHostKeyAlgorithms=ssh-rsa
而且起作用了。我能够从CentOS 6客户端成功地执行ssh。
因此,我将这些选项放在包括:
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
而且起作用了。
为什么我需要把这些指令放在包含之前?难道他们不应该去重写缺省值吗?
发布于 2021-11-29 07:21:11
虽然这种措辞不太清楚,但我怀疑config.d/*
目录允许为特定客户/用户或传入的界面/端口(S)提供单独的配置文件,而不是“系统范围内的配置文件”。这类似于使用apache/httpd和nginx中的sites/*
目录(可能还有更多)允许单独配置每个虚拟主机或应用程序,但仍然都由一台服务器支持。查看这些文件,看看它们是否包含匹配行(后面应该是其他真正的行=不匹配、注释或空白),这意味着它们只适用于特定的连接,而不是全部。
包括是文本性的。如果你有文件
blich
Include file*
blech
如果blich和blech不包含匹配行,但至少有一些文件(S)这样做(Es),那么blech实际上就成为了文件连接后的最后一个匹配块的一部分--因此,blech中的设置仅用于满足这些匹配条件的传入连接(S),而您的测试连接显然并不满足这些条件。
如果您想要SSHD设置是“全局的”,您必须将它们放在任何匹配线(S)之前,如果包含的‘文件’“包含”,这意味着您必须将全局设置放在“包括”之前。
配置文件中的所有设置都覆盖程序中的默认值。在配置文件中放置多次相同的设置(在任何匹配块之前/外部)使用的是第一个,而不是最后一个,所以重写早期的' default‘(如果它在文件中则根本不是默认设置)的想法是行不通的。只有在满足条件(S)的匹配块中,才会覆盖第一个匹配块。
PS:这大概是因为Fedora在警告(威胁?)之后是流血边缘和OpenSSH最近终于改变了这一点。从一年半前的8.2年起,他们就会这么做。
发布于 2023-03-16 14:14:55
我用:
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
在/etc/ssh/ sshd _config中重新启动sshd。
https://unix.stackexchange.com/questions/679451
复制相似问题