Мне было интересно, можно ли использовать FIDO2 для аутентификации на сервере ssh. Существует множество руководств, объясняющих, как использовать GPG и более новые Yubikeys для аутентификации ssh, но я не нашел никакой информации о том, возможно ли это или как можно использовать FIDO2 или U2F (особенно Yubico Security Key NFC) для аутентификации на сервере ssh.
решение1
Хорошие новости! OpenSSH 8.2добавил поддержку FIDO/U2F. Больше нет необходимости в патче.
Поддержка FIDO/U2F
В этом выпуске добавлена поддержка аппаратных аутентификаторов FIDO/U2F в OpenSSH. U2F/FIDO — это открытые стандарты для недорогого оборудования двухфакторной аутентификации, которые широко используются для аутентификации веб-сайтов. В OpenSSH устройства FIDO поддерживаются новыми типами открытых ключей
ecdsa-sk
иed25519-sk
, а также соответствующими типами сертификатов.
ssh-keygen
(1) могут использоваться для генерации ключа, поддерживаемого токеном FIDO, после чего их можно использовать так же, как и любой другой тип ключа, поддерживаемый OpenSSH, при условии, что аппаратный токен подключен при использовании ключей. Токены FIDO также обычно требуют, чтобы пользователь явно авторизовал операции, касаясь или нажимая на них.Для генерации ключа FIDO требуется прикрепить токен, и обычно пользователю требуется нажать на токен для подтверждения операции:
$ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk Generating public/private ecdsa-sk key pair. You may need to touch your security key to authorize key generation. Enter file in which to save the key (/home/djm/.ssh/id_ecdsa_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/djm/.ssh/id_ecdsa_sk Your public key has been saved in /home/djm/.ssh/id_ecdsa_sk.pub
решение2
Вы можете использовать pams, предоставленные yubico.
libpam-yubico
для аутентификации OTP можно использовать.ссылка
libpam-u2f
для u2f (нельзя использовать с ssh, так как он использует libusb, который читает только локальные порты.)
Кстати: PPA вам не нужен, он уже есть в репозитории (по крайней мере, Debian).
решение3
Это возможно благодаряисправление OpenSSH-сервера и клиента.
Поскольку этот патч не интегрирован в официальный код OpenSSH и выглядит довольно некорректно, он может содержать ошибки и уязвимости.