Sì, è possibile avere più chiavi a cui è consentito accedere a un account. Questa è una configurazione comune tra gli utenti che dispongono di più macchine attendibili e mantengono una chiave privata separata su ciascuna di esse.
Questa è anche una configurazione ragionevole per un account di servizio che ha il solo scopo di accedere a un'applicazione. In questa situazione di solito viene combinato con una shell di accesso ristretta o per scopi speciali che consente solo l'accesso a quella specifica applicazione. Ad esempio, gitosis è un gateway per il sistema di controllo versione Git e gestisce da solo l'autenticazione dell'utente, attenendosi a un giunto git
account a livello di unix. Se più persone possono eseguire comandi arbitrari attraverso questo account, dovresti davvero dare loro diversi account unix.
Chiedi agli utenti di inviarti una chiave pubblica e concatena le chiavi pubbliche insieme per formare il file ~/.ssh/authorized_keys
o aggiungi in modo equivalente ogni chiave pubblica a partire da un file vuoto.
Puoi mettere restrizioni sulle chiavi stesse nel % file% di scambio . Ad esempio, authorized_keys
dichiara una chiave senza restrizioni, mentre un utente che accede con la seguente chiave è autorizzato ad accedere da una subnet IP specifica, potrebbe non inoltrare le porte e potrebbe eseguire solo un comando specifico:
command="/usr/local/bin/restricted-app",from="192.0.2.0/24",no-agent-forwarding,no-port-forwarding,no-x11-forwarding ssh-rsa AAAA… [email protected]
Se ti affidi alle restrizioni dei comandi, fai attenzione che il comando non consenta alcun modo indiretto di ottenere una shell o di modificare i file nella directory ssh-rsa AAAA… [email protected]
o in qualsiasi altra posizione sensibile. È possibile creare la directory principale dell'account, la directory .ssh
e il suo contenuto di proprietà root e accessibile per la lettura dall'utente, che impedirebbe l'escalation dei privilegi nel caso in cui l'applicazione limitata abbia una vulnerabilità di sovrascrittura dei file ma nessuna vulnerabilità di escape.
Imposta ~/.ssh
(un incremento del livello predefinito LogLevel VERBOSE
) nella configurazione del server ( INFO
) per registrare quale chiave è stata utilizzata per accedere ogni volta all'account.