NFS SSH · 3 min read · Feb 08, 2026
[Debian-Sarge] Tunneling NFS over SSH
[Debian-Sarge] Tunneling NFS over SSH
Dernière mise à jour : 27-09-2006 @ ~21:40
Raison : Ajout de ports fixes pour le serveur nfs afin de faciliter la vie :)
Bienvenue
L’objectif de ce howto est de construire un serveur NFS qui fonctionne sur un tunnel SSH. De cette façon, tout le trafic entre vos hôtes et le serveur de fichiers est chiffré et donc plus sécurisé :)
Normalement, vous devriez entrer un mot de passe chaque fois que vous essayez d’établir une connexion SSH, mais comme nous pourrions monter au démarrage, nous allons utiliser ssh-keygen pour créer une paire de clés afin que nous puissions nous connecter sans entrer de mot de passe. Nous allons cependant limiter cette session de connexion à l’exécution d’une seule commande ;)
Nous allons utiliser une nouvelle installation propre de Debian Sarge pour commencer.
Dans ce howto, j’utiliserai le domaine fictif “linux.lan”.
Installation du logiciel
Nous allons commencer par le serveur NFS.
apt-get -y install nfs-kernel-serverTout d’abord, configurez-le pour qu’il fonctionne sur des ports fixes, cela facilitera beaucoup la construction d’un pare-feu, mais tout aussi important, cela aide à des montages clients plus simples.
echo “STATDOPTS=–port 2231” > /etc/default/nfs-common
echo “options lockd nlm_udpport=2232 nlm_tcpport=2232” >> /etc/modules.conf
echo “RPCNFSDCOUNT=8 RPCMOUNTDOPTS=’-p 2233’” > /etc/default/nfs-kernel-server
C’est tout, maintenant nous pouvons utiliser le port 2233 plus tard lorsque nous monterons les partages :) vérifiez si cela a fonctionné avec rpcinfo -p.
Si nlockmgr utilise toujours des ports aléatoires, c’est un paramètre compilé. Configurez cela dans grub/lilo comme paramètres du noyau :
“lockd.udpport=2232 lockd.tcpport=2232”.
Créez un nouvel utilisateur appelé sleeper à utiliser pour configurer le tunnel ssh depuis d’autres hôtes. Nous allons générer une clé pour ce compte afin que vous puissiez vous connecter avec un fichier de clé au lieu de taper votre mot de passe à chaque fois. Le compte sera également restreint à exécuter ‘sleep’ de cette manière. D’autres commandes échoueront simplement.
adduser sleeper
su sleeper
Maintenant, passez à un client qui utilisera notre serveur de fichiers.
Tout d’abord, nous avons besoin d’une clé :
ssh-keygen -t rsa -b 2048(utilisez les valeurs par défaut et AUCUNE phrase de passe !)
Maintenant, copiez le fichier .pub dans le répertoire personnel de sleeper sur le serveur :
scp -P 12345 ~/.ssh/id_rsa.pub [email protected]:~/Maintenant, retour au serveur : En tant qu’utilisateur ‘sleeper’, nous devons configurer/installer la clé :
mkdir ~/.ssh
cd ~/.ssh
mv ../id_rsa.pub ./id_rsa.pub
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
Ajoutez ceci au début de authorized_keys (avant ssh-rsa […]) :
client="client.linux.lan",command="/bin/sleep 600d"remplacez “client” par le nom d’hôte correct de votre client, ou utilisez des numéros IP.
(mais assurez-vous que chaque entrée reste sur 1 ligne !)
Chaque client qui a besoin d’accéder au serveur de fichiers doit stocker ses données de sécurité (du fichier id_rsa.pub) dans le fichier authorized_keys, donc vous devez répéter cela pour chaque hôte.
Montage NFS sur SSH sur vos clients
Émettez ces commandes pour démarrer les tunnels pour nfs et mountd :
(syntaxe : ssh -f -c encyption -L localport:nfsserver:nfsport -l username nfsserver remotecommand)
Notez également que le numéro de port pour mountd est différent à chaque redémarrage du serveur NFS… Gardez cela à l’esprit.
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 61001:10.0.0.241:2049 -l sleeper 10.0.0.241 sleep 600d
ssh -f -i /root/.ssh/id_rsa -c blowfish -L 62001:10.0.0.241:2233 -l sleeper 10.0.0.241 sleep 600d
Cela crée une connexion qui restera active pendant presque 2 ans… :)
Maintenant, éditez votre fstab et montez : echo “localhost:/export/data /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto” >> /etc/fstab mount /mnt
Bien sûr, nous avons besoin de quelques dossiers montables (partages) définis sur le serveur NFS :
mkdir /export
mkdir /export/data
mkdir /export/www-virtual
mkdir /export/www-conf
mkdir /export/mail-virtual
mkdir /export/mail-conf
Ajoutez-les à /etc/exports :
/home/export/data 10.0.0.241(rw,root_squash,sync)Remarquez que l’adresse IP est celle du serveur nfs lui-même ? C’est parce que vous les monterez depuis localhost lorsque vous aurez établi le tunnel ssh.
Quelques paramètres de sécurité puisque nous ne voulons pas que quiconque en dehors de notre réseau accède au serveur : echo “portmap: ALL” > /etc/hosts.deny
echo “portmap: 10.0.0.0/255.255.255.0” > /etc/hosts.allow
Redémarrez NFS : /etc/init.d/nfs-kernel-server restart
C’est tout ! Vous pouvez maintenant monter le système de fichiers sur vos clients sans avoir besoin de fournir un mot de passe. Et bien sûr, tout le trafic sera chiffré :)
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.