NFS over SSH · 3 min read · Feb 08, 2026

[Debian-Sarge] Tunneling NFS over SSH

[Debian-Sarge] Tunneling NFS over SSH

Última Atualização: 27-09-2006 @ ~21:40

Razão: Adicionadas portas fixas para o servidor nfs para facilitar a vida :)

Bem-vindo

O objetivo deste howto é construir um servidor NFS que funcione em um túnel SSH. Dessa forma, todo o tráfego entre seus hosts e o servidor de arquivos é criptografado e, portanto, mais seguro :)

Normalmente, você deve inserir uma senha toda vez que tentar estabelecer uma conexão SSH, mas como poderíamos estar montando na inicialização, usaremos ssh-keygen para criar um par de chaves para que possamos fazer login sem inserir uma senha. No entanto, limitaremos essa sessão de login a executar apenas 1 comando ;)

Usaremos uma nova instalação limpa do Debian Sarge para começar.

Neste howto, usarei o domínio fictício “linux.lan”.


Instalando Software

Começaremos com o servidor NFS.

apt-get -y install nfs-kernel-server

Primeiro, configure-o para rodar em portas fixas, isso tornará a construção de um firewall muito mais fácil, mas igualmente importante, ajuda em montagens de clientes mais 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

Isso é tudo, agora podemos usar a porta 2233 mais tarde quando montarmos os compartilhamentos :) verifique se funcionou com rpcinfo -p.
Se nlockmgr ainda usar portas aleatórias, é uma configuração compilada. Configure isso no grub/lilo como parâmetros do kernel:

“lockd.udpport=2232 lockd.tcpport=2232”.

Crie um novo usuário chamado sleeper para usar na configuração do túnel ssh de outros hosts. Geraremos uma chave para esta conta para que você possa fazer login com um arquivo de chave em vez de digitar sua senha toda vez. A conta também será restrita a executar ‘sleep’ dessa maneira. Outros comandos simplesmente falharão.

adduser sleeper
su sleeper

Agora mude para um cliente que usará nosso servidor de arquivos.

Primeiro, precisamos de uma chave:

ssh-keygen -t rsa -b 2048

(use os padrões e SEM frase de senha!)

Agora copie o arquivo .pub para o diretório home do sleeper no servidor:

scp -P 12345 ~/.ssh/id_rsa.pub [email protected]:~/

Agora volte para o servidor: Como o usuário ‘sleeper’, precisamos configurar/instalar a chave:

mkdir ~/.ssh
cd ~/.ssh
mv ../id_rsa.pub ./id_rsa.pub
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys

Adicione isso ao início de authorized_keys (antes de ssh-rsa […]):

client="client.linux.lan",command="/bin/sleep 600d"

substitua “client” pelo nome correto do seu cliente ou use números de ip.

(mas certifique-se de que cada entrada permaneça em 1 linha!)

Todo cliente que precisa de acesso ao servidor de arquivos precisa armazenar seus dados de segurança (do arquivo id_rsa.pub) no arquivo authorized_keys, então você deve repetir isso para cada host.

Montando NFS sobre SSH em seus clientes

Emita esses comandos para iniciar os túneis para nfs e mountd:

(sintaxe: ssh -f -c encryption -L localport:nfsserver:nfsport -l username nfsserver remotecommand)

Além disso, observe que o número da porta para mountd é diferente a cada reinicialização do servidor NFS… Mantenha isso em mente.

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

Isso cria uma conexão que permanecerá ativa por quase 2 anos… :)

Agora edite seu fstab e monte: echo “localhost:/export/data /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto” >> /etc/fstab mount /mnt

Claro que precisamos de algumas pastas montáveis (compartilhamentos) definidas no servidor NFS:

mkdir /export
mkdir /export/data
mkdir /export/www-virtual
mkdir /export/www-conf
mkdir /export/mail-virtual
mkdir /export/mail-conf

Adicione-as a /etc/exports:

/home/export/data 10.0.0.241(rw,root_squash,sync)

Note que o endereço ip é o próprio servidor nfs? É porque você montará a partir de localhost quando tiver estabelecido o túnel ssh.

Algumas configurações de segurança, pois não queremos que ninguém de fora da nossa rede acesse o servidor: echo “portmap: ALL” > /etc/hosts.deny
echo “portmap: 10.0.0.0/255.255.255.0” > /etc/hosts.allow

Reinicie o NFS: /etc/init.d/nfs-kernel-server restart

Isso é tudo! Agora você pode montar o sistema de arquivos em seus clientes sem a necessidade de fornecer uma senha. E, claro, todo o tráfego será criptografado :)

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.