A solution to this would be to emulate the 2FA hardware in software running on the same machine as you're using to log in - so it is not 2FA anymore but 1FA.
It would be at the cost of security, but at the benefit of allowing users to keep doing as they've been with regular passwords.
So what software solutions exist for emulating things like FIDO, WebAuthN, YubiKeys, etc.?
To emulate a security key you could write a kernel module that exposes a usb device (assuming you want to use the key with an unmodified driver) and somehow plug in the code that implements fido2.
We thought about it for a while and our idea was to build a generic usb to udp device driver. And then have a fido2 udp service in user space (the same we use to run tests). I still think it’s a good idea, however the devil might be in the details… and of course you’d need to build+maintain a driver for each platform (linux, macosx, windows…). The latter is actually the main reason why we never built it i. the first place.
Needless to say, this completely defeats the security of having your keys stored in a separate/more trusted device.