Можно ли разбить длинные строки в sshd_config?

14

Конкретно AllowUsersпараметр:

например преобразовать это

AllowUsers user1 user2 user3 user4

к этому

AllowUsers
    user1
    user2
    user3
    user4
Александр Погребняк
источник

Ответы:

10

Нет, но это не полезно в этом случае. Вы можете иметь несколько AcceptEnv, AllowGroups, AllowUsers, DenyGroups, DenyUsers, HostKey, PermitOpen, Portи Subsystemлинии, и каждая строка добавляет один или более (или иногда нулевой) элементы в списке.

Тем не менее, если вы не можете легко разместить свою AllowUsersдирективу в одной строке, я предлагаю создать ssh_allowedгруппу и использовать AllowGroups ssh_allowedin sshd_config.

Жиль "ТАК - перестань быть злым"
источник
О, хорошо, что нужно иметь несколько AllowUsersдиректив
Майкл Мрозек
Одно слово предостережения, выглядит AllowGroupsи AllowUsersне терпит друг друга (несколько записей одного типа в порядке). Таким образом, в вашей конфигурации придерживаться любой политики, но не обоих.
Александр Погребняк
2
Вы можете использовать и то, AllowGroupsи другое, AllowUsersно если вы это сделаете, демон OpenSSH разрешит вход в систему только разрешенным пользователям, если они также входят в разрешенную группу. Другими словами, это «и» (пересечение), а не «или» (объединение).
NWK
Было бы полезно в случае сделать KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256более читабельным
Ник Т
9

Короче, похоже нет

OpenSSH servconf.cвыгружает файл в буфер без проверки на такие вещи (все, что он делает, это ищет #пометку для комментария):

while (fgets(line, sizeof(line), f)) {
    if ((cp = strchr(line, '#')) != NULL)
        memcpy(cp, "\n", 2);
    cp = line + strspn(line, " \t\r");

    buffer_append(conf, cp, strlen(cp));
}

Функция, которая анализирует конфигурацию, затем разделяет буфер на новые строки и обрабатывает каждую строку:

while ((cp = strsep(&cbuf, "\n")) != NULL) {
    if (process_server_config_line(options, cp, filename,
        linenum++, &active, user, host, address) != 0)
    bad_options++;
}
Михаил Мрозек
источник