Wie montiere ich Remote-SSHFS über einen Zwischencomputer? Tunnelbau?


26

Ich möchte ein Remote-Dateisystem (A) mit SSHFS mounten, habe aber manchmal eine IP-Adresse, auf die nicht zugegriffen werden kann. Mein Plan ist es also, über eine andere Maschine (B) in diesem Netzwerk darauf zuzugreifen. Muss ich A auf B mounten und dann B (und A) auf meinem lokalen Computer mounten? Gibt es einen besseren Weg, es zu tun?

Aktualisieren

Nur um das Verfahren zu klären:

Zuerst mache ich einen Tunnel

ssh -f user@machineB -L MYPORT:machineA:22 -N

Und dann montiere ich das Remote-Dateisystem

sshfs -p MYPORT user@127.0.0.1:/myremotepath /mylocalpath

Ist es richtig?

Wie zerstöre ich den Tunnel, wenn ich fertig bin?


1
Die bessere Möglichkeit, einen Tunnel einzurichten, besteht darin, eine Verbindung zu B vom GNU-Bildschirmfenster mit ssh user @ machineB -L 2222: machineA: 22 -N herzustellen, damit Sie ihn leicht mit ^ C
edk

Antworten:


9

ja tunneln. Sie verbinden Maschine B, erstellen einen lokalen Tunnel (-L) mit dem SSHd-Port von Maschine A und sshfs zu localhost mit dem Port des neu erstellten Tunnels.


Ist der folgende Befehl der richtige Weg, um das zu tun? ssh -f user@machineB -L 25:machineA:25 -N
Andrei

1
Ja, wenn Sie sshd auf Maschine A auf Port 25 hören, müssen Sie nur sshfs -p 25 user@127.0.0.1: / path / localpath
edk

1
Aha, also für das standardmäßige SSH-Setup brauche ich das ssh -f user@machineB -L 22:machineA:22 -N, oder?
Andrei

16

Sie können mit Option ssh_commandvon sshfsdem Trick zu tun:

sshfs ma: /mnt -o ssh_command='ssh -t mb ssh'

Mit dem Üblichen aussteigen

fusermount -u /mnt

Entschuldigung, das ist 7 Jahre zu spät ...


5
Mit der neuen Option -J in Openssh 1.1 ist es etwas in Ordnung: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin

0

Ihr Verbindungsschema: Your machine --> Host B --> Host A

Unsere Lösung wird Proxy Jump verwenden, das in OpenSSH 7.3 eingeführt wurde. Sie müssen also überprüfen, ob Ihre Version neuer ist mit:

ssh -V

Dann müssen Sie Ihre ~ / .ssh / config richtig konfigurieren . Zum Beispiel, wenn Maschine B mit einem Passwort Login von Maschine A verfügbar ist :

machineB
    HostName {machineB ip address}
    User {machineB username}
    Port {machineB port-number}
    IdentityFile ~/.ssh/{machineB private ssh key}

machineA
    ProxyJump machineB
    Hostname {machineA ip address, maybe in local network}
    User {machineA username}
    Port {machineA port-number}

Erstellen Sie schließlich Ihren Mountpoint und fügen Sie die Zeile zu / etc / fstab hinzu

machineB:{machineB mount path}  {your local mountpoint}  fuse.sshfs delay_connect,_netdev,user,idmap=user,follow_symlinks,identityfile={local path to machineB private key},default_permissions,uid={local user uid},gid={local user gid} 0 0

Hat dies Vorteile gegenüber der Verwendung von nur -o ssh_command="ssh -J machineB"?
Clemisch
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.