Après quatre ans, cette réponse méritait une mise à jour. Alors qu'à l'origine je authorized_keysme suis utilisé et que je l'utiliserais probablement encore dans certains cas, vous pouvez également utiliser le sshd_configfichier de configuration du serveur central .
sshd_config
Vous pouvez désigner (pour votre cas d'utilisation particulier) un groupe, tel que proxy-onlyou Matchdes utilisateurs individuels. Dans sshd_config. Cela se fait après les paramètres globaux et révoque, répète ou affine certains des paramètres donnés dans les paramètres globaux.
Remarque: certaines des syntaxes / directives utilisées dans sshd_config(5)sont documentées dans la manpage pour ssh_config(5). Assurez-vous en particulier de lire la section PATTERNS de ssh_config(5).
Pour un groupe, cela signifie que votre Matchbloc commencerait comme suit:
Match group proxy-only
Vous pouvez Matchles critères suivants: User, Group, Host, LocalAddress, LocalPortet Address. Pour faire correspondre plusieurs critères, séparez simplement par virgule les paires critères-modèle ( group proxy-onlyci-dessus).
À l'intérieur d'un tel bloc, qui est traditionnellement en retrait pour des raisons de brièveté (mais pas nécessairement), vous pouvez ensuite déclarer les paramètres que vous souhaitez appliquer pour le groupe d'utilisateurs sans avoir à modifier chaque authorized_keysfichier pour les membres de ce groupe.
Le no-ptyparamètre de authorized_keysserait reflété par un PermitTTY noparamètre et command="/sbin/nologin"deviendrait ForceCommand /sbin/nologin.
De plus, vous pouvez également définir plus de paramètres pour satisfaire la paranoïa d'un administrateur, comme chroot-mettre l'utilisateur dans son dossier d'accueil et vous retrouver avec quelque chose comme ceci:
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
(vérifiez vous-même si vous avez besoin ou si vous voulez les lignes commentées et commentez si nécessaire)
Le %hest un jeton qui est substitué par le répertoire personnel de l'utilisateur ( %udonnerait le nom d'utilisateur et %%un signe de pourcentage). J'ai trouvé ChrootDirectoryparticulièrement utile de confiner mes sftp-onlyutilisateurs:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Veuillez noter que seules certaines directives peuvent être utilisées dans un Matchbloc. Consultez la manpage sshd_config(5)pour plus de détails (recherchez Match).
touches_autorisées
NB: la partie en dessous de cette remarque était ma réponse originale. En attendant - mais cela dépend aussi des caractéristiques de votre sshdversion exacte - je choisirais la méthode décrite ci-dessus dans la plupart des cas.
Oui, vous pouvez le faire aussi finement que vous pouvez attribuer des clés publiques. En plus de nologin tel que recommandé par ajdecon, je suggère de définir ce qui suit devant l'entrée clé dans authorized_keys:
no-pty ssh-rsa ...
Le no pty indique au serveur qu'aucun pseudo-terminal ne doit être alloué pour cette clé.
Vous pouvez également forcer l'exécution de quelque chose comme nologin pour une clé particulière en ajoutant ceci:
command="/sbin/nologin",no-pty ssh-rsa ...
no-ptyseul n'empêchera pas l'utilisateur de la clé d'exécuter des commandes. Voir superuser.com/q/1230979/195460 .