4

Я настроил свою учетную запись GitHub для использования U2F с использованием Yubikey (по всему SSH), но так как я также использую приглашение Git bash, поэтому каждый раз, когда я использую свой терминал, мне предлагается коснуться моего ключа безопасности.

Я не совсем понимаю взаимосвязь между учетными данными SSH, ключом и стандартом FIDO U2F, поэтому я не уверен, как настроить свою среду, чтобы перестать запрашивать меня каждый раз, когда я использую свой терминал.

Могу ли я настроить его, чтобы спрашивать, скажем, один раз в день или один раз за сеанс или что-то?

1 ответ1

3

Во-первых, U2F не кешируется по дизайну. Это не просто пароль; это протокол «вызов / ответ», в котором токен каждый раз получает различный «вызов» и выдает цифровые подписи, даже не раскрывая свои секретные ключи для ПК (в основном, как смарт-карта). Вот в чем его главная сила.

То же самое относится и к классическим одноразовым паролям Yubikey. Как следует из названия, они одноразовые, и сервер никогда не примет один и тот же пароль более одного раза, а также пароль, более старый, чем уже принятый.

При этом, есть две вещи, которые вы можете сделать:

  • Во-первых, выясните, что запрашивает учетные данные, потому что это определенно не SSH. Патчи поддержки U2F еще не были объединены с OpenSSH, и ssh git@github.com никогда не запрашивал какой-либо интерактивный ввод - он всегда использует только пары ключей SSH, а не пароль +2fa.

    Точно так же, если вы на самом деле используете HTTPS, а не SSH, насколько я знаю, по-прежнему отсутствует интеграция U2F в HTTP-аутентификацию, так что в большинстве случаев вас попросят ввести 6-значный код.

    Если у вас полноразмерный Yubikey, проверьте, мигает ли его индикатор при появлении запроса. Он только мигает при ожидании подтверждения U2F - если он устойчивый, вместо этого он отправит классический одноразовый пароль. И если вы видите, как Yubikey набирает длинный пароль, это не U2F.

  • Во-вторых, для SSH в целом вы можете включить функцию кэширования / мультиплексирования соединений OpenSSH. После входа на сервер OpenSSH будет поддерживать это соединение в течение нескольких минут даже после закрытия удаленной оболочки (т.е. даже после того, как Git завершит свои передачи).

    Для этого поместите в ваш ~/.ssh/config:

    Host *
        ControlMaster auto
        ControlPath ~/.ssh/S.%r@%h:%p
        ControlPersist 5m
    

    (Старые версии OpenSSH не поддерживают ControlPersist, поэтому вы можете оставить два других варианта, но вам нужно будет запустить соединение вручную с помощью ssh -fNM git@github.com .)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .