Cezary dziękuję za wskazówki 
Instrukcja na której się wzorowałem znajduje się tutaj
a tak wyglądały moje kroki:
1. Na PC uruchomiłem dystrybucję linuxa, która zawierała ssh w wersji co najmniej 8.2,
wersję można sprawdzić za pomocą polecenia:
W moim przypadku była to wersja 8.3 a dystrybucja jakiej użyłem to Manjaro.
Niestety samo ssh nie wystarczyło i musiałem doinstalować pakiet libfido2.
2. W porcie usb PC umieściłem token (Yubico 5 NFC) i wygenerowałem parę kluczy:
mkdir -p ~/.ssh
ssh-keygen -t ed25519-sk -f ~/.ssh/id_ed25519_sk
W trakcie generowania można (ale nie trzeba) podać hasło zabezpieczające dostęp do klucza prywatnego oraz ewentualnie potwierdzić akcję dotykając pole na tokenie. Może też się zdarzyć, że program zapyta o PIN do tokena (PIN ustawiany jest przeważnie w aplikacji producenta).
WAŻNE!!! W tym momencie koniecznie robimy backup nowych kluczy np: na pendrive.
3. Na routerze (u mnie OpenWrt 19.07-SNAPSHOT od Cezarego) ustawiamy logowanie przez ssh za pomocą hasła co ułatwi kopiowanie klucza publicznego na router. W tym celu w pliku /etc/config/dropbear zmieniamy dwie opcje:
config dropbear
...
option PasswordAuth 'on'
option RootPasswordAuth 'on'
...
i restartujemy dropbear:
/etc/init.d/dropbear restart
4. Teraz na PC wydajemy polecenie, które skopiuje nasz klucz publiczny na router (port taki jaki mamy ustawiony w dropbear):
ssh-copy-id -i ~/.ssh/id_ed25519_sk root@192.168.1.1 -p 22
Podajemy hasło do routera i ewentualnie hasło zabezpieczające jakie ustawiliśmy przy generowaniu kluczy w kroku 2.
Klucz powinien się dodać na końcu pliku /root/.ssh/authorized_keys na routerze (można spawdzić cat-em lub vi).
5. Aby autoryzacja U2F działała na routerze trzeba zainstalować openssh-server w wersji co najmniej 8.2
W bieżących pakietach jest tylko wersja 8.0 dlatego tak jak Cezary podpowiedział musimy zainstalować pakiety ze snapshota.
W tym celu logujemy się przez ssh na router (lub używamy istniejacej sesji z kroku 3)
i dodajemy do pliku /etc/opkg/customfeeds.conf linijkę:
src/gz snapshot_packages https://downloads.openwrt.org/snapshots/packages/arm_cortex-a15_neon-vfpv4/packages
W moim przypadku użyłem ścieżki dla architektury arm_cortex-a15_neon-vfpv4 ponieważ mój router to Netgear R7800, architekturę routera można sprawdzić wpisując w wyszukiwarkę np:
"openwrt.org wdr3600"
(na stronie projektu są dokładne opisy większości modeli)
i odpowiednio zmienić tą część ścieżki.
Następnie:
opkg update
opkg install openssh-server
i najnowsza wersja 8.3 serwera ssh powinna się zainstalować:)
6. Zmieniamy ustawienia nowego serwera w pliku /etc/ssh/sshd_config tak aby logowanie odbywało się za pomocą kluczy a nie za pomocą hasła oraz żeby port nie kolidował z portem dropbear (22):
...
Port 2222
...
ListenAddress 192.168.1.1
...
PermitRootLogin prohibit-password
...
PubkeyAuthentication yes
...
PasswordAuthentication no
...
7. Sprawdzamy logowanie U2F
WAŻNE!!! Jeżeli mamy otwartą sesję ssh z poprzednich kroków to warto ją zostawić na wypadek gdybyśmy jakimś cudem zatrzymali oba serwery ssh, pozwoli nam to na zmianę konfiguracji i ominie nas odpalanie routera w trybie awaryjnym.
Uruchamiamy sshd:
Na PC, na którym generowaliśmy klucze podpinamy token i sprawdzamy czy logowanie na router się powiedzie:
ssh root@192.168.1.1 -p 2222
jeśli ustawialiśmy hasło zabezpieczające klucz prywatny, wpisujemy je - chwilę potem dioda na tokenie zacznie mrugać co oznacza oczekiwanie na akcję użytkownika czyli przyciśnięcie pola na tokenie.
Po udanym logowaniu można wyłączyć dropbear i włączyć sshd na stałe:
/etc/init.d/dropbear stop
/etc/init.d/dropbear disable
/etc/init.d/sshd enable
oraz
zakomentować / usunąć linijkę repozytorium snapshot z pliku /etc/opkg/customfeeds.conf
# src/gz snapshot_packages https://downloads.openwrt.org/snapshots/packages/arm_cortex-a15_neon-vfpv4/packages
PS. Mam nadzieję, że niczego nie pomieszałem - uwagi i sugestie mile widziane:)
m80