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