GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So installieren und verwenden Sie SSHFS unter Linux

SSHFS (SSH File System) ist eine Implementierung eines Dateisystems im User Space (FUSE), das es Clients ermöglicht, ein entferntes Dateisystem über eine SSH-Verbindung zu mounten. SSHFS verwendet das SSH File Transfer Protocol (SFTP), um das Remote-Dateisystem auf dem Client-Rechner bereitzustellen, und die Verbindungen zwischen Client und Server sind sicher und verschlüsselt.

SSHFS kann als Alternative zum herkömmlichen FTP-Protokoll verwendet werden. Es ist standardmäßig über eine SSH-Verbindung sicher und es sind keine zusätzlichen Pakete oder Konfigurationen erforderlich. Das SSHFS arbeitet mit einer einfachen Standard-SSH-Konfiguration.

In diesem Tutorial erfahren Sie, wie Sie ein Remote-Verzeichnis auf sichere Weise mit SSHFS zwischen zwei Linux-Maschinen (Client und Server) mounten. Diese Anleitung beinhaltet auch, wie man Chroot auf SSHFS einrichtet, das Benutzer daran hindert, auf die Verzeichnisse anderer Benutzer zuzugreifen.

Voraussetzungen

Um dieser Anleitung zu folgen, benötigen Sie zwei Linux-Maschinen, einen Client und einen Server. Sie können jede Linux-Distribution verwenden und sicherstellen, dass auf dem Server ein OpenSSH-Server installiert ist und Sie einen Nicht-Root-Benutzer mit den sudo-Root-Berechtigungen haben.

Installieren von SSHFS auf Ihrem lokalen Computer

Standardmäßig SSHFS Pakete sind auf den meisten Linux-Distributionen verfügbar, einschließlich Debian/Ubuntu, RHEL/CentOS/Rocky und ArchLinux/Manjaro. Sie können es einfach mit Ihrem Systempaketmanager installieren. In diesem Abschnitt installieren Sie SSHFS auf Ihrem lokalen/Client-Rechner.

Aktualisieren Sie zunächst Ihre Paketindexliste, indem Sie den folgenden Befehl ausführen.

# For Debian/Ubuntu
sudo apt update

# For RHEL/CentOS/RockyLinux
sudo dnf check-update

# For ArchLinux/Manjaro
sudo pacman -Syu

Nachdem Ihr Paketindex aktualisiert wurde, installieren Sie das SSHFS-Paket mit Ihrem Paketmanager wie unten beschrieben. Bei der Debian- und Archlinux-Distribution heißt das Paket „sshfs ', aber bei einer RHEL-basierten Distribution heißt das Paket 'fuse-sshfs '.

# For Debian/Ubuntu
sudo apt install sshfs

# For RHEL/CentOS/RockyLinux
sudo dnf install fuse-sshfs

# For ArchLinux/Manjaro
sudo pacman -S sshfs

Jetzt haben Sie die Installation des SSHFS-Pakets auf Ihrem lokalen Computer abgeschlossen. Als Nächstes lernen Sie den grundlegenden Befehl zum Mounten und Unmounten von Remote-Verzeichnissen/-Partitionen auf Ihrem lokalen Computer mit dem SSHFS-Befehl kennen.

Basic:Mounten und Unmounten mit SSHFS

Bevor Sie mit dem SSHFS-Befehl beginnen, stellen Sie sicher, dass Sie einen Linux-Server mit aktiviertem OpenSSH installiert haben. Für die Benutzerauthentifizierung beim Server können Sie die passwortbasierte SSH-Authentifizierung oder die schlüsselbasierte SSH-Authentifizierung verwenden. Sie können jedoch die schlüsselbasierte SSH-Authentifizierung in Betracht ziehen, die sicherer ist als die kennwortbasierte Authentifizierung.

In diesem Abschnitt lernen Sie den grundlegenden Befehl von „sshfs“ zum Mounten von Remote-Verzeichnissen/-Partitionen vom Server auf dem lokalen/Client-Rechner kennen. Außerdem erfahren Sie, wie Sie sshfs von Ihrem lokalen Rechner aushängen.

1. Der grundlegende Befehl von 'sshfs ' zum Mounten eines Verzeichnisses auf dem lokalen Rechner über das SSH-Protokoll finden Sie weiter unten.

sshfs [email protected]:/remote/directory /local/directory

Hängen Sie in der Praxis das Remote-Verzeichnis '/srv/data ein ' vom Server '172.16.1.10 ' in das lokale Maschinenverzeichnis '~/data '. Dieses Beispiel verwendet den SSH-Benutzer „johndoe“.

sshfs [email protected]:/srv/data ~/data

Jetzt werden Sie zur Passwortauthentifizierung aufgefordert, wenn Sie die passwortbasierte Authentifizierung für Ihr SSH verwenden.

Führen Sie zur Überprüfung den Befehl „ls“ in das Verzeichnis „~/data“ aus ' auf dem lokalen Rechner.

ls -lah ~/data

Sie sehen eine Liste mit Dateien vom Remote-Server auf Ihrem lokalen Rechner.

2. Führen Sie nun den Befehl „fusermount“ aus, um das Remote-Verzeichnis von Ihrem lokalen Rechner abzuhängen ' wie nachstehend. Dieser Befehl wird zum Mounten und Unmounten von FUSE-Dateisystemen verwendet.

fusermount -u ~/data

3. Ein weiteres Beispiel für 'sshfs ' Befehl, dass Sie interessiert sein könnten.

Der 'sshfs'-Befehl mit der Debugging-Option '-d '. Wenn Sie Probleme mit dem 'sshfs'-Befehl haben, verwenden Sie die zusätzliche Option '-d' um alle Debug-Meldungen anzuzeigen, wenn eine Verbindung zum Server hergestellt wird.

sshfs [email protected]:/remote/directory /local/directory -d

Wenn Sie jetzt einen Server mit einem nicht standardmäßigen SSH-Port betreiben, können Sie die Option '-p' hinzufügen gefolgt von Ihrem SSH-Port.

sshfs [email protected]:/remote/directory /local/directory -C -p 2222

Die Option '-C ' aktiviert die Komprimierung, was der Option '-o compression=yes' entspricht im ssh-Befehl.

Für eine vollständige Referenz können Sie die Option '--help' oder die SSHFS-Manpage verwenden.

sshfs --help
man sshfs

Chroot auf SSHFS einrichten

In diesem Abschnitt erfahren Sie, wie Sie Chroot auf SSHFS aktivieren, was durch die Konfiguration des SSH-Servers und die Angabe des Benutzers und des Verzeichnisses erreicht werden kann. Die Chroot-Umgebung beschränkt den Verzeichniszugriff, aber Ihr Benutzer kann immer noch im Mount-Verzeichnis lesen und schreiben.

1. Zuerst erstellen Sie ein neues Chroot-Verzeichnis für Ihren Benutzer und gewähren Lese- und Schreibzugriff. In dieser Anleitung erstellen Sie ein neues freigegebenes Verzeichnis „/srv/shared“ und erstellen dann ein neues Home-Verzeichnis und ein neues Datenverzeichnis für jeden Benutzer.

Führen Sie den folgenden Befehl aus, um ein neues freigegebenes Hauptverzeichnis '/srv/shared' zu erstellen und ändern Sie den Besitz auf den Benutzer und die Gruppe 'root '.

mkdir -p /srv/shared
sudo chown -R root:root /srv/shared

2. Erstellen Sie nun für jeden Benutzer ein weiteres Verzeichnis unter '/srv/shared' Verzeichnis. Und stellen Sie sicher, dass Sie den Besitz dieses Verzeichnisses auf den Benutzer und die Gruppe 'root ändern '.

mkdir -p /srv/shared/johndoe
sudo chown -R root:root /srv/shared/johndoe

3. Als nächstes erstellen Sie die 'Daten ' Verzeichnis im Home-Verzeichnis des Benutzers '/srv/shared/johndoe '. Ändern Sie dann den Besitz dieses Verzeichnisses auf den Benutzer 'root ' und Gruppe 'johndoe '. Erlauben Sie zuletzt die Gruppe „johndoe ', um in diesem Verzeichnis zu lesen und zu schreiben.

mkdir -p /srv/shared/johndoe/data
sudo chown -R root:johndoe /srv/shared/johndoe/data
sudo chmod g+rwx /srv/shared/johndoe/data

Jetzt können Sie das Remote-Verzeichnis '/data mounten ', entspricht aber dem Verzeichnis '/srv/shared/johndoe/data' auf dem Server.

4. Nachdem Sie das Chroot-Verzeichnis für Ihren Benutzer erstellt haben, müssen Sie die SSH-Konfiguration „/etc/ssh/sshd_config“ bearbeiten. Bearbeiten Sie es mit Nano oder Ihrem bevorzugten Texteditor.

sudo nano /etc/ssh/sshd_config

Fügen Sie der Datei die folgenden Zeilen hinzu.

Subsystem sftp internal-sftp
Match User johndoe
       ChrootDirectory /srv/shared/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no

Die Konfiguration 'internal-sftp ' wird es SSH ermöglichen, auch als SFTP-Server zu fungieren. Definieren Sie dann das 'ChrootDirectory ' für Benutzer 'johndoe ' in die Datei '/srv/shared/%u ' Verzeichnis. Das '%u ' bedeutet als Benutzername.

Speichern und schließen Sie die Datei.

5. Führen Sie als Nächstes den folgenden Befehl aus, um die SSH-Konfiguration zu überprüfen, und stellen Sie sicher, dass Sie keine Syntaxfehler erhalten. Starten Sie dann den SSH-Dienst neu, um eine neue Konfiguration anzuwenden.

sudo sshd -t
sudo systemctl restart sshd

6. Gehen Sie nun zurück zum Client/lokalen Rechner und mounten Sie dann das Remote-Verzeichnis in der Chroot-Umgebung. Sie sollten das Verzeichnis „/data“ anstelle des vollständigen Pfadverzeichnisses „/srv/shared/johndoe/data“ verwenden. Und Sie haben die Rechte zum Lesen, Schreiben und Ausführen im Verzeichnis „data“.

sshfs [email protected]:/data ~/data

Um den Schreibzugriff zu überprüfen, erstellen Sie mit dem folgenden Befehl eine neue Datei auf Ihrem Client-Rechner.

cd ~/data
echo "This file from client machine" >> another-file.md

Navigieren Sie nun zurück zum Server zum Verzeichnis „/srv/shared/johndoe/data ', überprüfen Sie die verfügbare Datei in diesem Verzeichnis.

cd /srv/shared/johndoe/data/
ls

cat another-file.md

Sie sehen die Datei, die Sie gerade auf dem Client-Rechner erstellt haben.

In diesem Abschnitt haben Sie das Chroot-Verzeichnis für SSHFS-Benutzer erstellt und den SSH-Dienst konfiguriert, um Chroot zu aktivieren.

Fehlerbehebung

Wenn Sie einen Fehler bei der SSHFS-Verbindung erhalten, können Sie Ihre Verbindung auf folgende Weise beheben.

Sie können den Debug-Modus mit der Option '-d' verwenden . Mit dieser Option sehen Sie Protokolle Ihrer Verbindung auf Ihrem Shell-Terminal.

Führen Sie 'sshfs aus ' Befehl mit Debug-Modus wie unten.

sshfs [email protected]:/data ~/mnt -d

Eine andere Möglichkeit, die Sie ausprobieren können, besteht darin, das SSH-Protokoll auf Ihrem Server zu überprüfen. Bevor Sie den Befehl „sshfs“ verwenden, öffnen Sie ein neues Terminal, stellen Sie eine Verbindung zu Ihrem Server her und führen Sie dann „tail“ aus ' Befehl, um den SSH-Protokolldienst zu überprüfen.

Auf Ubuntu/Debian-basierten Systemen ist das SSH-Protokoll unter '/var/log/auth.log verfügbar '. Und für RHEL/CentOS-basierte Systeme ist das SSH-Protokoll unter „/var/log/secure“ verfügbar .

# For Ubuntu/Debian
tail -f /var/log/auth.log

# For RHEL/CentOS
tail -f /var/log/secure

Schlussfolgerung

Glückwunsch! Sie haben jetzt gelernt, wie Sie SSHFS verwenden, um ein Remote-Verzeichnis vom Server auf Ihrem lokalen Computer bereitzustellen. Außerdem haben Sie gelernt, wie Sie eine Chroot-Umgebung auf SSHFS einrichten und wie Sie Probleme mit Ihrer SSHFS-Verbindung beheben.


Linux
  1. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  2. So verwenden Sie den Su-Befehl unter Linux

  3. So installieren und verwenden Sie Flatpak unter Linux

  4. So installieren und verwenden Sie den fping-Befehl unter Linux

  5. So installieren und verwenden Sie Traceroute unter Linux

So installieren und verwenden Sie phpMyAdmin unter Linux

So installieren und verwenden Sie den Ping-Befehl unter Linux

So installieren und verwenden Sie den fd-Befehl unter Linux

So installieren und verwenden Sie Nu Shell unter Linux

So installieren und verwenden Sie den Ack-Befehl im Linux-System

So installieren und verwenden Sie den Ack-Befehl unter Linux