Slightly off-topic, but OpenSSH already supports this via `AuthorizedKeysCommand`: https://man.openbsd.org/sshd_config#AuthorizedKeysCommand
Re:Show HN: Caddy-SSH
by nodesocket on Monday March 28, 2022 @08:08PM
(#30837104)
Oh really interesting. Any good guides you know of how to implement AuthorizedKeysCommand with Redis for example?
Hi @nodesocket, you can take a look how we solved it with Theo https://theoapp.readthedocs.io/en/latest/index.html
It supports fine hosts/users grants - i.e. I can connect as "dev" user on servers "node1" and "node2" but not on "node3" - and it leverages asymmetric key signing to validate the public SSH keys.
Theo supports mysql/mariadb/sqlite/postgresql(experimental) for storing data and redis/memecached for caching.
Happy to answer any further questions!
I'm not really an expert on redis. Perhaps one can fashion something with `redis-cli`? Or write a program that links the redis client library.
That's right! Currently such (static) keys are loaded at provision-time, when the server is first booting up, but there's nothing preventing it from being lazy-loaded at authentication-time. Of course loading them at authentication-time incurs latency as tax. Nothing prevents two separate modules from existing: one eager-loads the keys, and another lazy-loads them.
Obviously, security of that Redis or Consul would have to be tight and prevent public access.