Après quatre ans, cette réponse méritait une mise à jour. Alors qu'à l'origine je authorized_keys
me suis utilisé et que je l'utiliserais probablement encore dans certains cas, vous pouvez également utiliser le sshd_config
fichier de configuration du serveur central .
sshd_config
Vous pouvez désigner (pour votre cas d'utilisation particulier) un groupe, tel que proxy-only
ou Match
des 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 man
page pour ssh_config(5)
. Assurez-vous en particulier de lire la section PATTERNS de ssh_config(5)
.
Pour un groupe, cela signifie que votre Match
bloc commencerait comme suit:
Match group proxy-only
Vous pouvez Match
les critères suivants: User
, Group
, Host
, LocalAddress
, LocalPort
et Address
. Pour faire correspondre plusieurs critères, séparez simplement par virgule les paires critères-modèle ( group proxy-only
ci-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_keys
fichier pour les membres de ce groupe.
Le no-pty
paramètre de authorized_keys
serait reflété par un PermitTTY no
paramè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 %h
est un jeton qui est substitué par le répertoire personnel de l'utilisateur ( %u
donnerait le nom d'utilisateur et %%
un signe de pourcentage). J'ai trouvé ChrootDirectory
particulièrement utile de confiner mes sftp-only
utilisateurs:
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 Match
bloc. Consultez la man
page 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 sshd
version 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-pty
seul n'empêchera pas l'utilisateur de la clé d'exécuter des commandes. Voir superuser.com/q/1230979/195460 .