Как кэшировать учетные данные Yubikey/U2F при аутентификации через SSH (в частности, Git)?

Как кэшировать учетные данные Yubikey/U2F при аутентификации через SSH (в частности, Git)?

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

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

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

решение1

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

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

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

  • Сначала выясните, для чего у вас запрашивают учетные данные, потому что это определеннонетSSH. Поддержка U2Fпатчипока не объединены с OpenSSH и никогда не запрашивали никакого интерактивного ввода — они используют только пары ключей SSH, а не пароль+2fa.ssh [email protected]

    Аналогично, если вы на самом деле отправляете данные по 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 [email protected]

Связанный контент