Outils pour utilisateurs

Outils du site


sftp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

sftp [2012/11/30 13:51]
nicolas Ajout de la partie Clients
sftp [2019/04/02 11:14]
Ligne 1: Ligne 1:
-====== Serveur de fichier sécurisé avec SSH, SFTP et SSHFS ====== 
-Cette page explique comment configurer un serveur de fichier simple, léger et sécurisé en utilisant SSH, SFTP et SSHFS. ​ 
-Le serveur ainsi configuré : 
-  * sera accessible via SFTP (SSH) 
-  * utilisera des connexions chiffrées 
-  * sera capable d'​authentifier un utilisateur avec clé publique 
-  * chrootera cet utilisateur dans son home 
-  * interdira l'​accès au shell à cet utilisateur 
-  * sera montable dans arborescence sous Linux et comme disque réseau sous Windows 
  
-L'​installation se décompose en deux parties principales : l'​installation du serveur et l'​installation du client 
- 
-===== Serveur ===== 
- 
-==== Installation ==== 
-Sur le serveur le seul programme utilisé est OpenSSH qui est installé sur beaucoup de distributions en standard. 
- 
-==== Ajout du groupe sftpusers ==== 
-Tous les utilisateurs qui seront membres du groupe ''​sftpusers''​ seront automatiquement restreints à l'​utilisation de sftp lors de leur connexion. 
-''​groupadd sftpusers''​ 
- 
-==== Configuration du daemon SSH ==== 
-Ajoutez au fichier ''/​etc/​ssh/​sshd_config''​ : 
-<​code>​ 
-# Chroot for sftpusers members 
-Match Group sftpusers 
-        ChrootDirectory %h 
-        ForceCommand internal-sftp 
-        AllowTcpForwarding no 
-        GatewayPorts no 
-        X11Forwarding no 
-</​code>​ 
- 
-Note : AllowUser et DenyUser sont toujours effectifs, n'​oublier pas d'​autoriser vos futurs utilisateurs si besoin est. 
- 
-==== Création d'un utilisateur ==== 
-Il faut maintenant créer un utilisateur qui ne pourra qu'​accéder à son répertoire en SFTP. Pour cela il faut qu'il soit membre de ''​sftpusers'',​ qu'il ait un homedir et qu'il n'ait pas de shell. Cet utilisateur s'​appellera ''​toto''​. 
- 
-<​code>​ 
-mkdir /home/toto 
-chown root:root: /home/toto 
-chmot 755 /home/toto 
-useradd -U -G toto,​sftpusers -s /bin/false -d /home/toto 
-mkdir /​home/​toto/​data 
-chown toto:toto /​home/​toto/​data 
-chmod 750 /​home/​toto/​data 
-passwd toto # Pas obligatoire si vous voulez une authentification par clé publique 
-</​code>​ 
- 
-L'​astuce ici consiste à donner le homedir à root mais à laisser tout le monde y accéder, puis donner un répertoire ''​data''​ accessible uniquement à toto. Sans cette manipulation le chroot n'est pas possible. 
- 
-==== Authentification par clé publique ==== 
-Si vous voulez pouvoir monter automatiquement ce point de montage dans l’arborescence du **client** au démarrage il faut mettre en place un système de clé publique. En temps normal les clés sont situées dans le homedir de l'​utilisateur ''​~/​.ssh/​authorized_keys'',​ cependant ici puisque c'est root qui a les droits sur le homedir, OpenSSH détecte une erreur de permission et ne permet pas le login. Il faut changer l'​endroit où OpenSSH cherche les clés. 
- 
-**Attention :** Si vous avez déjà des comptes qui se connectent avec clé dans ''​~/​.ssh''​ ayez conscience que changer cette directive peut rendre l'​accès à votre serveur inaccessible. 
- 
-Dans ''/​etc/​ssh/​sshd_config''​ : 
-<​code>​ 
-AuthorizedKeysFile ​   /​etc/​ssh/​%u/​authorized_keys 
-</​code> ​ 
- 
-Cela va dire à OpenSSH de chercher dans un autre répertoire cette clé (''​%u''​ correspond au nom d'​utilisateur qui se connecte). Il faut donc créer ce répertoire avec les bonnes permissions : 
-<​code>​ 
-mkdir /​etc/​ssh/​toto/​ 
-chown toto:toto /​etc/​ssh/​toto 
-chmod 755 /​etc/​ssh/​toto 
-touch /​etc/​ssh/​toto/​authorized_keys 
-chown toto:toto /​etc/​ssh/​toto/​authorized_keys 
-chmod 644 /​etc/​ssh/​toto/​authorized_keys 
-</​code>​ 
- 
-On rempliera le fichier ''​authorized_keys''​ dans la partie configuration client. 
- 
-===== Clients ===== 
- 
-==== Linux ==== 
-Pour monter dans votre arborescence un système de fichier sshfs il vous faut les paquets ''​fuse''​ et ''​sshfs''​. Fuse permet de monter des systèmes en tant qu'​utilisateur,​ sans passer par root. 
- 
-Veillez à mettre l'​utilisateur client qui montera le système dans le groupe fuse : ''​usermod -a -g fuse nom_client''​. Reconnectez-vous à votre shell pour recharger les groupes. 
- 
-Si vous voulez vous connecter par mot de passe vous pouvez sauter ce paragraphe. Si vous voulez utiliser une connexion par clé il faut générer cette dernière. Sur le client : ''​ssh-keygen'',​ cette commande va créer deux clé, une privée et une publique, respectivement dans ''​~/​.ssh/​id_rsa''​ et ''​~/​.ssh/​id_rsa.pub''​. Copiez la clé publique de votre **client** dans le fichier ''/​etc/​ssh/​toto/​authorized_keys''​ du **serveur**. Vous pouvez répéter cette étape autant de fois que vous avez de clients désirant se connecter, chacun ayant sa clé, il faut alors mettre une clé publique par ligne dans le fichier ''/​etc/​ssh/​toto/​authorized_keys''​. 
-**Note :** le fait d'​avoir une clé différente par client permet de dévalider une seule clé dans le cas où elle serait compromise. 
- 
-Il suffit ensuite de monter votre système de fichier distant : 
-<​code>​ 
-mkdir ~/​serveur_distant # Répertoire qui servira de point de montage 
-sshfs toto@domaine.tld:/​data ~/​serveur_distant -p 22 
-</​code>​ 
- 
-Pour le démonter : 
-<​code>​ 
-fusermount -u ~/​serveur_distant 
-</​code>​ 
- 
-**Note :** Cette méthode de montage n'​autorise pas le montage automatique. Une méthode consiste à utiliser ''​autofs''​ pour monter ce système de fichier à la demande. Cependant ''​autofs''​ s'​utilise en root, c'est donc root qui monte et démonte le système, ce n'est pas très élégant mais possible. Cette méthode n'est pas décrite ici. 
- 
-==== Windows ==== 
-Le protocole SSH n'est pas pris en compte nativement par Windows, cependant une dizaine de programmes permettant de monter du sshfs sous Windows sont disponibles,​ libres ou non. Ces programmes permettent de créer un disque dur réseau connecté à votre serveur par ssh. 
- 
-  * [[http://​code.google.com/​p/​win-sshfs | Win-sshfs sur Google Code]] : Open source, simple d'​utilisation mais quelques bugs. 
sftp.txt · Dernière modification: 2019/04/02 11:14 (modification externe)