Dopo quattro anni questa risposta meritava un aggiornamento. Mentre originariamente mi sono usato authorized_keys
e probabilmente lo userei ancora in alcuni casi selezionati, puoi anche usare il sshd_config
file di configurazione del server centrale .
sshd_config
Puoi designare (per il tuo particolare caso d'uso) un gruppo, come proxy-only
o Match
singoli 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 man
pagina per ssh_config(5)
. In particolare, assicurati di leggere la sezione PATTERN di ssh_config(5)
.
Per un gruppo questo significa che il tuo Match
blocco inizierà così:
Match group proxy-only
È possibile Match
i seguenti criteri: User
, Group
, Host
, LocalAddress
, LocalPort
e Address
. Per abbinare diversi criteri basta separare in virgola le coppie modello-criterio ( group proxy-only
sopra).
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_keys
file per i membri di quel gruppo.
L' no-pty
impostazione da authorized_keys
verrebbe rispecchiata da PermitTTY no
un'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 chroot
inserire 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 ( %u
darebbe il nome utente e %%
un segno di percentuale). Ho trovato ChrootDirectory
particolarmente utile limitare i miei sftp-only
utenti:
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 Match
blocco. Consultare la man
pagina 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 sshd
versione 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-pty
da soli non impedirà all'utente della chiave di eseguire comandi. Vedi superuser.com/q/1230979/195460 .