SSH 配置 - 选项 - 删除一些同时添加其他?

SSH 配置 - 选项 - 删除一些同时添加其他?

我知道 ssh 配置文件是从上到下解析的,并且它使用为第一个有效匹配列出的选项,如果已经看到该选项,则忽略后面有效匹配中的选项。我尝试了几种不同的格式变体,但通过我的努力,它似乎要么不喜欢语法/格式,要么忽略该选项(如果它在同一主机下出现两次)。

我正在使用这个版本:

ssh -V
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2

对于任意示例,KexAlgorithms 选项支持显式列表,或从默认集中添加和删除:

指定可用的 KEX(密钥交换)算法。多个算法必须以逗号分隔。如果指定的列表以“+”字符开头,则指定的方法将附加到默认集而不是替换它们。如果指定的列表以“-”字符开头,则指定的方法(包括通配符)将从默认集中删除而不是替换它们。如果指定的列表以“^”字符开头,则指定的方法将放置在默认集的开头。

https://man7.org/linux/man-pages/man5/ssh_config.5.html

如果我想将默认设置更改为:

  • 删除:diffie-hellman-group-exchange-sha256 以及 curve25519-sha256
  • 添加:diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

有谁知道语法,或者是否可以添加和删除,而不必自己制作所有选项的完全明确的列表?

我尝试在 KexAlgorithms 之后的同一行中使用 + 和 - 列表修饰符,但它报告为垃圾。如果我将它们拆分为单独的列表(见下文),它执行得很好,但似乎只执行顶部的 KexAlgorithms 选项,而不是两者。

Host myHost
  HostName myHost.myDomain.com
  KexAlgorithms -"diffie-hellman-group-exchange-sha256,curve25519-sha256"
  KexAlgorithms +"diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1"

我知道我正在删除一些安全选项并添加不安全的选项,无需告诉我:-)

谢谢!

更新:根据要求ssh -Q kex输出:

diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
[email protected]
[email protected]

答案1

从您链接的联机帮助页中:

由于使用每个参数的第一个获得的值,因此应在文件开头附近给出更多特定于主机的声明,并在末尾给出一般默认值。

这意味着如果您有KexAlgorithms两次,则仅考虑第一个。

在所使用的算法中KexAlgorithms,您可以设置、删除或添加算法,但不能组合使用这些算法。

因此,您可以拥有自己的个性化列表,但必须明确设置它。

为了检查它是否有效,ssh -vv Myhost您可以执行以下操作而不是冗长的操作:

 ssh -G myHost | grep -i kex

相关内容