Dopo quattro anni questa risposta meritava un aggiornamento. Mentre originariamente mi sono usato authorized_keyse probabilmente lo userei ancora in alcuni casi selezionati, puoi anche usare il sshd_configfile di configurazione del server centrale .
sshd_config
Puoi designare (per il tuo particolare caso d'uso) un gruppo, come proxy-onlyo Matchsingoli utenti. In sshd_config. Questo viene fatto dopo le impostazioni globali e revoca, ripete o perfeziona alcune delle impostazioni fornite nelle impostazioni globali.
Nota: alcune delle sintassi / direttive utilizzate sshd_config(5)sono documentate nella manpagina per ssh_config(5). In particolare, assicurati di leggere la sezione PATTERN di ssh_config(5).
Per un gruppo questo significa che il tuo Matchblocco inizierà così:
Match group proxy-only
È possibile Matchi seguenti criteri: User, Group, Host, LocalAddress, LocalPorte Address. Per abbinare diversi criteri basta separare in virgola le coppie modello-criterio ( group proxy-onlysopra).
All'interno di tale blocco, che è tradizionalmente rientrato di conseguenza per brevità (ma non è necessario), è quindi possibile dichiarare le impostazioni che si desidera applicare per il gruppo utenti senza dover modificare ogni singolo authorized_keysfile per i membri di quel gruppo.
L' no-ptyimpostazione da authorized_keysverrebbe rispecchiata da PermitTTY noun'impostazione e command="/sbin/nologin"diventerebbe ForceCommand /sbin/nologin.
Inoltre, puoi anche configurare più impostazioni per soddisfare la paranoia di un amministratore, come ad esempio chrootinserire l'utente nella sua cartella home e finire con qualcosa del genere:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
(controlla se hai bisogno o vuoi le righe commentate e il commento come necessario)
Il %hè un token che viene sostituito da directory home dell'utente ( %udarebbe il nome utente e %%un segno di percentuale). Ho trovato ChrootDirectoryparticolarmente utile limitare i miei sftp-onlyutenti:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Tieni presente che solo alcune direttive possono essere utilizzate in un Matchblocco. Consultare la manpagina sshd_config(5)per i dettagli (cercare Match).
authorized_keys
NB: la parte sotto questa osservazione è stata la mia risposta originale. Nel frattempo, ma dipende anche dalle funzionalità della sshdversione esatta, nella maggior parte dei casi sceglierei il metodo sopra descritto.
Sì, è possibile, per quanto possibile assegnare le chiavi pubbliche. Oltre a nologin come raccomandato da ajdecon, suggerirei di impostare quanto segue davanti alla voce chiave in authorized_keys:
no-pty ssh-rsa ...
No pty indica al lato server che non è necessario allocare alcun pseudo-terminale per quella chiave.
Puoi anche forzare l'esecuzione di qualcosa come nologin per una chiave particolare anteponendo questo:
command="/sbin/nologin",no-pty ssh-rsa ...
no-ptyda soli non impedirà all'utente della chiave di eseguire comandi. Vedi superuser.com/q/1230979/195460 .