NFS SSH · 3 min read · Feb 08, 2026
[Debian-Sarge] Túnel NFS sobre SSH
[Debian-Sarge] Túnel NFS sobre SSH
Última actualización: 27-09-2006 @ ~21:40
Razón: Se añadieron puertos fijos para el servidor nfs para facilitar la vida :)
Bienvenido
El objetivo de este cómo es construir un servidor NFS que funcione en un túnel SSH. De esta manera, todo el tráfico entre tus hosts y el servidor de archivos está cifrado y, por lo tanto, es más seguro :)
Normalmente deberías ingresar una contraseña cada vez que intentas establecer una conexión SSH, pero dado que podríamos estar montando al inicio, utilizaremos ssh-keygen para crear un par de claves para que podamos iniciar sesión sin ingresar una contraseña. Sin embargo, limitaremos esa sesión de inicio de sesión a ejecutar solo 1 comando ;)
Usaremos una nueva instalación limpia de Debian Sarge para comenzar.
En este cómo usaré el dominio ficticio “linux.lan”.
Instalando Software
Comenzaremos con el servidor NFS.
apt-get -y install nfs-kernel-serverPrimero configúralo para que se ejecute en puertos fijos, esto hará que construir un firewall sea mucho más fácil, pero igualmente importante, ayuda en montajes de clientes más 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
Eso es todo, ahora podemos usar el puerto 2233 más adelante cuando montemos los recursos :) verifica si funcionó con rpcinfo -p. Si nlockmgr aún usa puertos aleatorios, es una configuración compilada. Configura esto en grub/lilo como parámetros del kernel:
“lockd.udpport=2232 lockd.tcpport=2232”.
Crea un nuevo usuario llamado sleeper para usar en la configuración del túnel ssh desde otros hosts. Generaremos una clave para esta cuenta para que puedas iniciar sesión con un archivo de clave en lugar de escribir tu contraseña cada vez. La cuenta también estará restringida a ejecutar ‘sleep’ de esta manera. Otros comandos simplemente fallarán.
adduser sleeper
su sleeper
Ahora cambia a un cliente que usará nuestro servidor de archivos.
Primero necesitamos una clave:
ssh-keygen -t rsa -b 2048(utiliza los valores predeterminados y SIN frase de contraseña!)
Ahora copia el archivo .pub al directorio home de sleeper en el servidor:
scp -P 12345 ~/.ssh/id_rsa.pub [email protected]:~/Ahora de vuelta al servidor: Como el usuario ‘sleeper’ necesitamos configurar/instalar la clave:
mkdir ~/.ssh
cd ~/.ssh
mv ../id_rsa.pub ./id_rsa.pub
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
Agrega esto al principio de authorized_keys (antes de ssh-rsa […]):
client="client.linux.lan",command="/bin/sleep 600d"sustituye “client” con el nombre de host correcto de tu cliente, o usa números ip.
(pero asegúrate de que cada entrada permanezca en 1 línea!)
Cada cliente que necesite acceso al servidor de archivos necesita almacenar sus datos de seguridad (del archivo id_rsa.pub) en el archivo authorized_keys, por lo que deberías repetir esto para cada host.
Montando NFS sobre SSH en tus clientes
Emite estos comandos para iniciar los túneles para nfs y mountd:
(sintaxis: ssh -f -c cifrado -L puerto_local:nfsserver:nfsport -l nombre_usuario nfsserver comando_remoto)
También ten en cuenta que el número de puerto para mountd es diferente con cada reinicio del servidor NFS… Ten eso en cuenta.
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
Esto crea una conexión que permanecerá activa durante casi 2 años… :)
Ahora edita tu fstab y monta:
echo “localhost:/export/data /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto” >> /etc/fstab mount /mnt
Por supuesto, necesitamos algunas carpetas montables (recursos) definidas en el servidor NFS:
mkdir /export
mkdir /export/data
mkdir /export/www-virtual
mkdir /export/www-conf
mkdir /export/mail-virtual
mkdir /export/mail-conf
Agrégalas a /etc/exports:
/home/export/data 10.0.0.241(rw,root_squash,sync)¿Notas que la dirección ip es el propio servidor nfs? Es porque las montarás desde localhost cuando hayas establecido el túnel ssh.
Algunas configuraciones de seguridad ya que no queremos que nadie fuera de nuestra red acceda al servidor: echo “portmap: ALL” > /etc/hosts.deny
echo “portmap: 10.0.0.0/255.255.255.0” > /etc/hosts.allow
Reinicia NFS: /etc/init.d/nfs-kernel-server restart
¡Eso es todo! Ahora puedes montar el sistema de archivos en tus clientes sin necesidad de proporcionar una contraseña. Y, por supuesto, todo el tráfico estará cifrado :)
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.