Ответы здесь мне очень помогли.
Однако в моем случае я хочу отключить некоторые 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
)