मध्यवर्ती मशीन के माध्यम से दूरस्थ SSHFS को कैसे माउंट करें? टनेलिंग?


26

मैं SSHFS का उपयोग करके एक दूरस्थ फ़ाइल सिस्टम (ए) माउंट करना चाहता हूं, लेकिन कभी-कभी मेरे पास आईपी पता होता है, जिसमें से प्रवेश की अनुमति नहीं है। इसलिए मेरी योजना उस नेटवर्क में किसी अन्य मशीन (B) के माध्यम से इसे एक्सेस करने की है। क्या मुझे बी पर माउंट ए और फिर बी (और ए) को अपने स्थानीय कंप्यूटर पर माउंट करने की आवश्यकता है? इसे करने का कोई बेहतर तरीका है?

अद्यतन करें

बस प्रक्रिया स्पष्ट करने के लिए:

सबसे पहले, मैं एक सुरंग बनाता हूं

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

और फिर मैं रिमोट फाइल सिस्टम को माउंट करता हूं

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

क्या यह सही है?

जब मैं किया जाता है तो मैं सुरंग को कैसे नष्ट कर सकता हूं?


1
सुरंग को स्थापित करने का बेहतर तरीका है कि GNU स्क्रीन विंडो से B का कनेक्शन ssh उपयोगकर्ता @ machineB -L 2222: machineA: 22 -N से करें ताकि आप इसे आसानी से ^ C
edk

जवाबों:


9

हाँ, सुरंग बनाना। आप मशीन B को कनेक्ट करते हैं, मशीन A के SSHd पोर्ट में लोकल टनल (-L) बनाते हैं, फिर लोकलहोस्ट को नए बनाए गए टनल के पोर्ट पर sshfs करते हैं ।


निम्नलिखित कमांड ऐसा करने का सही तरीका है? ssh -f user@machineB -L 25:machineA:25 -N
आंद्रेई

1
हाँ, यदि आपने मशीन ए पर 25 पोर्ट को सुनने के लिए sshd किया है, तो आपको बस sshfs -p 25 user@127.0.0.1: / path / localpath
edk

1
अहा, तो डिफ़ॉल्ट ssh सेटअप के लिए मुझे चाहिए ssh -f user@machineB -L 22:machineA:22 -N, है ना?
आंद्रेई

16

आप ट्रिक करने के विकल्प ssh_commandका उपयोग कर सकते हैं sshfs:

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

हमेशा की तरह अनमाउंट करें

fusermount -u /mnt

क्षमा करें, यह 7 साल की देर है ...


5
नए -जे विकल्प के साथ ओपेंश 1.1 में यह कुछ इस प्रकार है: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin

0

आपकी कनेक्शन योजना: Your machine --> Host B --> Host A

हमारा समाधान ओपनएसएसएच 7.3 में पेश किए गए प्रॉक्सी जंप का उपयोग करेगा , इसलिए आपको यह जांचना होगा कि आपका संस्करण नया है:

ssh -V

फिर आपको अपने ~ / .ssh / config को ठीक से कॉन्फ़िगर करने की आवश्यकता है । उदाहरण के लिए, यदि मशीनब मशीन से पासवर्ड लॉगिन के साथ उपलब्ध है :

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}

अंत में, अपना माउंट पॉइंट बनाएं और / etc / fstab में लाइन जोड़ें

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

क्या इसका कोई लाभ है बनाम केवल उपयोग करने से -o ssh_command="ssh -J machineB"?
क्लेमैक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.