Как ssh сервер выбирает правильный открытый ключ?

Поскольку основанные на ключе подлинные пользователи должны добавить свои открытые ключи к ~/.ssh/authorized_keys файл. Этот файл может содержать много ключей, один на строку. Таким образом, как сервер выбирает правильный ключ для аутентификации пользователя с?

1
задан 7 November 2017 в 11:37

1 ответ

От исходного кода это просто циклично выполняется по всем ключам, пока ключ соответствия не найден:

process_principals(FILE *f, const char *file, struct passwd *pw,
    const struct sshkey_cert *cert)
{
//...

    while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
        /* Always consume entire input */
        if (found_principal)
            continue;
//...
        for (i = 0; i < cert->nprincipals; i++) {
            if (strcmp(cp, cert->principals[i]) == 0) {
                debug3("%s:%lu: matched principal \"%.100s\"",
                    file, linenum, cert->principals[i]);
                if (auth_parse_options(pw, line_opts,
                    file, linenum) != 1)
                    continue;
                found_principal = 1;
                continue;
            }
        }
    }
    return found_principal;
}
1
ответ дан 7 December 2019 в 15:28

Другие вопросы по тегам:

Похожие вопросы: