Modification du fichier de configuration du serveur OpenSSH
Pour limiter un utilisateur se connectant au serveur OpenSSH à l'utilisation du protocole d'échange de fichiers SFTP et restreindre ses accès à un environnement chrooté , il faut modifier la configuration du daemon OpenSSH.
Celle-ci est conservée, sous les systèmes Debian GNU/Linux, dans le fichier
/etc/ssh/sshd_config
, mais le chemin ou le nom de ce fichier peuvent être
différent sur d'autres systèmes. Sous Debian, vous devrez commencer par
commenter la ligne ci-dessous fournie par défaut, car elle doit être remplacée.
Effectuer la modification suivante si votre configuration contient déjà une
ligne Subsystem sftp …
:
-Subsystem sftp /usr/lib/openssh/sftp-server
+#Subsystem sftp /usr/lib/openssh/sftp-server
Les éditions de fichiers et les commandes données dans cette page doivent se
faire sous le superutilisateur root
.
Pour limiter les accès d'un utilisateur dont le login serait hkrustofski
à
son répertoire personnel /home/hkrustofski
, on pourra ensuite ajouter les
lignes suivantes à ce même fichier /etc/ssh/sshd_config
(ou le fichier
équivalent si vous utilisez un autre système) :
Subsystem sftp internal-sftp
Match User hkrustofski
ChrootDirectory /home/hkrustofski
ForceCommand internal-sftp
À propos de cette configuration, notez que :
-
il est possible de désigner plusieurs utilisateurs en séparant leur login par une virgule (par exemple
user1,user2
au lieu dehkrustofski
; -
il est aussi possible d'utiliser un format spécial pour désigner le répertoire de chroot. Par exemple,
%h
est remplacé par le répertoire personnel de l'utilisateur, et%u
par son login. C'est pratique lorsque l'instructionMatch
s'applique à plusieurs utilisateurs ; -
la directive
Match
n'a rien de spécifique au chroot, et peut s'utiliser dans ce fichier pour appliquer n'importe quelle configuration particulière à :- un ou plusieurs utilisateurs (
User user1[,user2,...]
), - à un groupe d'utilisateurs (remplacer
User ...
parGroup ...
), - ou aux connexions provenant de machines ou réseaux spécifiques (au lieu de
User
, utilisez les mot-clefsHost
ouAddress
).
- un ou plusieurs utilisateurs (
Tout ceci est décrit plus en détails dans la page de manuel
sshd_config(5)
(recherchez-y les mots-clefs Match
, ChrootDirectory
, ForceCommand
et
Subsystem
).
Redémarrage du serveur OpenSSH
Vous devrez ensuite redémarrer le serveur SSH:
service ssh reload
L'utilisateur hkrustofski, en se connectant à l'aide de la commande sftp
(ou via les fonctionnalités SFTP des outils de transfert de fichiers comme
Filezilla, FireFTP, etc.), ne pourra pas voir ni accéder à d'autres
fichiers et répertoires que ceux présents sous son répertoire
/home/hkrustofski
.
Attention, lorsque vous testez votre accès SSH, n'utilisez pas la commande
ssh
, mais sftp
ou scp
(ou tout autre client utilisant le protocole SFTP),
car la connexion avec le clieht ssh
n'ouvrirait pas de shell, mais
afficherait un simple message énigmatique, puisque l'accès au shell n'est plus
possible et que le serveur ne répond qu'aux commandes SFTP.