Mount Remote-Verzeichnis mit SSH

69

Wie mounte SSHich ein Remote-Verzeichnis so , dass es verfügbar ist, als wäre es ein lokales Verzeichnis?

Maythux
quelle

Antworten:

78

Installieren Sie zuerst das Modul:

sudo apt-get install sshfs

Lade es in den Kernel:

sudo modprobe fuse

Festlegen von Berechtigungen (Ubuntu-Versionen <16.04):

sudo adduser $USER fuse
sudo chown root:fuse /dev/fuse
sudo chmod +x /dev/fusermount

Jetzt erstellen wir ein Verzeichnis, in das der Remote-Ordner eingehängt werden soll.

Ich habe es in meinem Home-Verzeichnis erstellt und es aufgerufen remoteDir.

mkdir ~/remoteDir

Jetzt habe ich den Befehl ausgeführt, um es zu mounten (mount on home):

sshfs maythux@192.168.xx.xx:/home/maythuxServ/Mounted ~/remoteDir

Nun sollte es montiert werden:

cd ~/remoteDir
ls -l
Maythux
quelle
Ich bin ein wenig verwirrt ... im sshfsBefehl denke ich, dass das lokale Mountpoint-Verzeichnis benannt ist remoteDir, und wenn ich auf dem SSH-Serever bin, gibt es ein Verzeichnis, /home/maythuxServ/Mounteddas nicht lokal gemountet ist, und ich kann nicht sagen, oder egal, ob es woanders montiert ist?
Volker Siegel
3
Ich habe einige dieser Schritte unter 14.04 übersprungen, als ich die folgende Anleitung verwendet habe: help.ubuntu.com/community/SSHFS
Hemm
4
Keine Sicherungsgruppe erforderlich (Ubuntu 16.04, Nov 2017): stackoverflow.com/questions/35635631/ubuntu-15-10-no-fuse-group
Matt Kleinsmith 30.11.17
2
Am 18.04 habe ich die vollständigen 2. Block - Einstellungsrechte übersprungen und es funktioniert einwandfrei.
Optimist
3
Die Hälfte dieser Antwort funktioniert entweder nicht oder ist veraltet. Bitte aktualisieren.
Luís de Sousa
18

Konfigurieren Sie die schlüsselbasierte SSH-Authentifizierung

Generieren Sie ein Schlüsselpaar auf dem lokalen Host.

$ ssh-keygen -t rsa

Akzeptieren Sie alle Vorschläge mit der Eingabetaste.

Kopieren Sie den öffentlichen Schlüssel auf den Remote-Host:

$ ssh-copy-id -i .ssh/id_rsa.pub user@host

Installieren Sie sshfs

$ sudo apt install sshfs

Remote-Verzeichnis einbinden

$ sshfs user@host:/remote_directory /local_directory

Versuchen Sie nicht, ferne fs zu / etc / fstab hinzuzufügen

Oder versuchen Sie nicht, Freigaben über /etc/rc.local einzuhängen.

In beiden Fällen funktioniert es nicht, da das Netzwerk nicht verfügbar ist, wenn init / etc / fstab liest.

Installieren Sie AutoFS

$ sudo apt install autofs

Bearbeiten Sie /etc/auto.master

Kommentieren Sie die folgenden Zeilen aus

#+/etc/auto.master.d
#+/etc/auto.master

Fügen Sie eine neue Zeile hinzu

/- /etc/auto.sshfs --timeout=30

Speichern und Beenden

Bearbeiten Sie /etc/auto.sshfs

Fügen Sie eine neue Zeile hinzu

/local_directory -fstype=fuse,allow_other,IdentityFile=/local_private_key :sshfs\#user@remote_host\:/remote_directory

Der Remote-Benutzername ist obligatorisch.

Speichern und Beenden

Starten Sie autofs im Debug-Modus

$ sudo service autofs stop
$ sudo automount -vf

Beobachten Sie die Protokolle des Remote-SSH-Servers

$ ssh user@remote_server
$ sudo tailf /var/log/secure

Überprüfen Sie den Inhalt des lokalen Verzeichnisses

Sie sollten den Inhalt des Remote-Verzeichnisses sehen

Starten Sie autofs im normalen Modus

Beenden Sie AutoFS im Debug-Modus mit STRG-C.

Starten Sie AutoFS im normalen Modus

$ sudo service autofs start

Genießen

(Getestet auf Ubuntu 14.04)

Wojciech Domalewski
quelle
5

Basierend auf meinen Experimenten ist es NICHT erforderlich, die Sicherungsgruppe explizit zu erstellen und Ihren Benutzer hinzuzufügen, um das ssh-Dateisystem einzuhängen.

Zusammenfassend sind hier die Schritte, die von dieser Seite kopiert wurden:

  1. Installieren sshfs

$ sudo apt-get install sshfs

2.Erstellen Sie einen lokalen Einhängepunkt

$ mkdir /home/johndoe/sshfs-path/

3.Mount Remote-Ordner /remote/pathauf/home/johndoe/sshfs-path/

$ sshfs [email protected]:/remote/path /home/johndoe/sshfs-path/

  1. Und schließlich, um abzusteigen ...

$ fusermount -u /home/johndoe/sshfs-path/

Prathu Baronia
quelle
3

Installieren Sie sshfs

sudo apt-get install sshfs

Zu fstab hinzufügen:

<USER>@<SERVER_NAME>:<server_path> <local_path> fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/<YOUR_USER_NAME>/.ssh/id_rsa,allow_other,default_permissions,rw,nosuid,nodev,uid=1000,gid=1000,nonempty 0 0
Sergei
quelle