SSH 服务器端,指定每个主机的算法

SSH 服务器端,指定每个主机的算法

在运行 SSH 的服务器上,我需要它接受 1 个特定 SSH 主机的一些旧算法,以便我可以将文件从客户端复制到服务器。我无法更改客户端,因为它又旧又垃圾。因此,在服务器端,我使用以下内容编辑了 /etc/sshd_config ,它解决了我的问题。

HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

然而,问题是,ssh-rsa 不安全。所以我不想就这样离开。我该如何设置,以便如果源 IP 是 1.2.3.4,我可以专门允许这些算法适用于该主机,并且该主机可以单独使用这些算法?

答案1

与指定任何其他每主机配置相同

Host my.hostname.example.com
  PubkeyAcceptedKeyTypes +ssh-rsa

HostKeyAlgorithms顺便说一句,如果您只想连接到旧的远程主机,则不需要该选项。

答案2

sshd为主机(或用户)使用不同配置选项的方法是使用Match条件行块。在这种情况下Match Host ...Match Address ...是最合适的,具体取决于是否sshd可以解析连接客户端的主机名或 IP 地址。举个例子:

Match Address 10.11.12.13 10.9.8.7
  PubkeyAcceptedKeyTypes +ssh-rsa

手册sshd_config页提供了有关使用 的详细信息Match,但大多数手册页没有说得很清楚的一件事是 sshd_config 文件中 Match 块的正确位置: 在文件的末尾。

我的 Ubuntu 20.04 上的手册页显示:

如果满足“匹配”行上的所有条件,则以下行中的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个“匹配”行或文件末尾。

您必须仔细解释该句子,才能看到 Match 后面的行不应是全局配置指令,而只是其他 Match 块中的指令,直到文件末尾。

源代码中的注释块更明确地揭示了这一点,如这个答案是去年的。当找到 Match 块时,变量activep将被清除(设置为 0),并且文件其余部分中的任何参数都不会被视为全局配置指令 - 它们都是 Match 块的一部分。

大多数答案都是关于与这个问题无关的一些怪癖。我链接到它是因为它显示了源代码中的注释。

相关内容