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

931
Mark McDonald

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

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

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

4
Возможно, вас просят прикоснуться к клавише в результате выполнения какого-либо скрипта профиля. Проверьте `.profile` и` .bashrc` в вашем домашнем каталоге на вашем терминале Git на предмет того, что связано с ssh или каким-либо другим образом нуждается в этом ключе. deed02392 8 лет назад 0

1 ответ на вопрос

3
grawity

Во-первых, 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.)

Сохранение соединения SSH - отличное решение, спасибо. Стоит указать всем будущим читателям, что вы действительно хотите убедиться, что доступ к файлу ControlPath очень ограничен. Чтобы свести к минимуму любой вред, который может получить злоумышленник, получивший открытое соединение, я установил в моей строке хоста значение Host github.com. Mark McDonald 8 лет назад 0

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