NFS über SSH · 3 min read · Feb 08, 2026

[Debian-Sarge] NFS über SSH tunneln

[Debian-Sarge] NFS über SSH tunneln

Letzte Aktualisierung: 27-09-2006 @ ~21:40

Grund: Feste Ports für den NFS-Server hinzugefügt, um das Leben einfacher zu machen :)

Willkommen

Das Ziel dieses Howtos ist der Aufbau eines NFS-Servers, der über ein SSH-Tunnel funktioniert. Auf diese Weise ist der gesamte Datenverkehr zwischen Ihren Hosts und dem Dateiserver verschlüsselt und somit sicherer :)

Normalerweise sollten Sie jedes Mal ein Passwort eingeben, wenn Sie versuchen, eine SSH-Verbindung herzustellen, aber da wir möglicherweise beim Booten einbinden, werden wir ssh-keygen verwenden, um ein Schlüsselpaar zu erstellen, damit wir uns ohne Eingabe eines Passworts anmelden können. Wir werden jedoch diese Anmeldesitzung auf die Ausführung von nur 1 Befehl beschränken ;)

Wir werden mit einer neuen, sauberen Debian Sarge-Installation beginnen.

In diesem Howto werde ich die fiktive Domain “linux.lan” verwenden.


Software installieren

Wir beginnen mit dem NFS-Server.

apt-get -y install nfs-kernel-server

Zuerst konfigurieren wir ihn so, dass er auf festen Ports läuft. Dies erleichtert den Aufbau einer Firewall erheblich, ist aber ebenso wichtig für einfachere Client-Mounts.

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

Das war’s, jetzt können wir später Port 2233 verwenden, wenn wir die Freigaben einbinden :) Überprüfen Sie, ob es funktioniert hat mit rpcinfo -p. Wenn nlockmgr weiterhin zufällige Ports verwendet, ist dies eine eingebaute Einstellung. Konfigurieren Sie dies in grub/lilo als Kernelparameter:

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

Erstellen Sie einen neuen Benutzer namens sleeper, um das SSH-Tunnel von anderen Hosts einzurichten. Wir werden einen Schlüssel für dieses Konto generieren, damit Sie sich mit einer Schlüsseldatei anstelle der Eingabe Ihres Passworts anmelden können. Das Konto wird auch auf die Ausführung von ‘sleep’ auf diese Weise beschränkt. Andere Befehle schlagen einfach fehl.

adduser sleeper
su sleeper

Jetzt wechseln Sie zu einem Client, der unseren Dateiserver verwenden wird.

Zuerst benötigen wir einen Schlüssel:

ssh-keygen -t rsa -b 2048

(verwenden Sie die Standardwerte und KEIN Passwort!)

Jetzt kopieren Sie die .pub-Datei in das Home-Verzeichnis von sleeper auf dem Server:

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

Jetzt zurück zum Server: Als Benutzer ‘sleeper’ müssen wir den Schlüssel konfigurieren/installieren:

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

Fügen Sie dies am Anfang von authorized_keys (vor ssh-rsa […]) hinzu:

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

ersetzen Sie “client” durch den richtigen Hostnamen Ihres Clients oder verwenden Sie IP-Nummern.

(aber stellen Sie sicher, dass jeder Eintrag in einer Zeile bleibt!)

Jeder Client, der Zugriff auf den Dateiserver benötigt, muss seine Sicherheitsdaten (aus der id_rsa.pub-Datei) in der Datei authorized_keys speichern, sodass Sie dies für jeden Host wiederholen sollten.

NFS über SSH auf Ihren Clients einbinden

Geben Sie diese Befehle ein, um die Tunnel für nfs und mountd zu starten:

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

Beachten Sie auch, dass die Portnummer für mountd bei jedem Neustart des NFS-Servers unterschiedlich ist… Denken Sie daran.

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

Dies erstellt eine Verbindung, die fast 2 Jahre lang aktiv bleibt… :)

Jetzt bearbeiten Sie Ihre fstab und binden: echo “localhost:/export/data /mnt nfs tcp,rsize=8192,wsize=8192,intr,rw,bg,nosuid,port=61001,mountport=62001,noauto” >> /etc/fstab mount /mnt

Natürlich müssen wir einige einbindbare Ordner (Freigaben) auf dem NFS-Server definieren:

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

Fügen Sie sie zu /etc/exports hinzu:

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

Beachten Sie, dass die IP-Adresse der NFS-Server selbst ist? Das liegt daran, dass Sie sie von localhost aus einbinden, wenn Sie das SSH-Tunnel eingerichtet haben.

Einige Sicherheitseinstellungen, da wir nicht möchten, dass jemand von außerhalb unseres Netzwerks auf den Server zugreift: echo “portmap: ALL” > /etc/hosts.deny
echo “portmap: 10.0.0.0/255.255.255.0” > /etc/hosts.allow

Starten Sie NFS neu: /etc/init.d/nfs-kernel-server restart

Das war’s! Sie können jetzt das Dateisystem auf Ihren Clients einbinden, ohne ein Passwort eingeben zu müssen. Und natürlich wird der gesamte Datenverkehr verschlüsselt :)

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.