Řešení 1:
Všechny soubory klíčů lze centralizovat ve stejném adresáři a nemíchat je ve stejném souboru.
Jednoduše nastavte sshd_config
soubor takto:
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
Na vašem serveru:
- Klíče www-data budou v
/etc/ssh/authorized_keys/www-data
- kořenové klíče budou v
/etc/ssh/authorized_keys/root
Pokud jde o přístupová práva, sshd přijímá tato nastavení:
/etc/ssh/authorized_keys
je ve vlastnictví root:root
a má režim 755. Klíčové soubory vlastní root:root
a mají režim 644.
Jiné režimy mohou fungovat, ale netestoval jsem je.
Řešení 2:
Obecně řečeno bych neudělal to, co navrhujete. Porušuje běžné předpoklady (jako ~/.ssh/authorized_keys
pracuje pro vaše uživatele a přináší problémy, které jste již zmínili ve své otázce. Pokud před implementací vidíte do očí bijící problémy, znamená to, že vaše řešení není ideální.
Z hlediska bezpečnosti si také myslím, že je to HROZNÉ nápad, aby všichni sdíleli servisní účet:Právě teď jste to jen vy a víte, že změny provádíte vy. Za 5 let, kdy budete mít 5 administrátorů, budete chtít vědět, kdo co změnil, a prohrabávat se protokoly auditu, abyste zjistili, kdo kdy použil jaký klíč, je královská bolest.
Je lepší, když se lidé přihlašují jako oni sami a používají sudo
nebo něco podobného, aby eskalovali jejich privilegia a dělali vše, co potřebují.
Pokud stále chcete centralizovat klíče SSH, doporučuji podívat se na systém nasazení, jako je Puppet nebo radmind, který bude spravovat/distribuovat authorized_keys
soubory do příslušných ~user/.ssh/
adresáře (nebo hacknout podomácku vypěstované řešení, které je SCP zavede na místo).
Když expandujete na více serverů, možná budete chtít nahlédnout do opravy veřejného klíče LDAP pro starší verze OpenSSH (nebo AuthorizedKeysCommand
direktivu a vhodný skript v novější verzi OpenSSH), takže můžete centralizovat své uživatele a nemusíte distribuovat jejich klíče po celé síti, ale to pro vás bude pravděpodobně dost daleko.