这里的答案对我帮助很大。
然而,就我而言,我想禁用一些 MAC 并添加一些新的。有没有办法在不硬编码选项的情况下做到这一点?
以下不起作用。
MACs +hmac-xxxx
MACs -hmac-gggg
在这种情况下,只有第一条语句才会起作用。有没有一种方法可以在不进行硬编码的情况下实现这一目标?
答案1
没有办法做到这一点。
ssh
只会考虑第一个MACs
(或Ciphers
等)声明并默默地忽略其余声明,尽管在它们格式错误时会抱怨。
你可以看一下源码。在readconf.c
:
options->macs = NULL;
...
case oMacs:
arg = strdelim(&s);
if (!arg || *arg == '\0')
fatal("%.200s line %d: Missing argument.", filename, lin
enum);
if (*arg != '-' &&
!mac_valid(*arg == '+' || *arg == '^' ? arg + 1 : arg))
fatal("%.200s line %d: Bad SSH2 MAC spec '%s'.",
filename, linenum, arg ? arg : "<NONE>");
if (*activep && options->macs == NULL)
options->macs = xstrdup(arg);
break;
options->macs
仅当尚未设置时才会设置(当它已设置时NULL
)