बूट पर macfuse के माध्यम से एक sshfs माउंट करें


7

मैं मैक OSX के तहत बूट पर एक sshfs फ़ोल्डर माउंट करना चाहता हूं: मैं अभी Macfusion का उपयोग कर रहा हूं, जो MacFUSE के लिए एक GUI है, लेकिन मुझे फ़ोल्डर को मैन्युअल रूप से माउंट करना होगा।

मैं उसे कैसे प्राप्त कर सकता हूं?

जवाबों:


6

यदि आप एक दूरस्थ मशीन बनाए रखते हैं, तो उस मशीन की फाइलसिस्टम को स्थानीय रूप से माउंट करने के लिए वास्तव में उपयोगी हो सकता है ताकि वह फाइलों को स्थानांतरित कर सके। MacFuse और sshfsइसे वास्तव में आसान बनाते हैं, हालांकि इसे स्थापित करना और लॉगिन पर स्वचालित रूप से माउंट करना थोड़ा मुश्किल हो सकता है।

सबसे पहले, सुनिश्चित करें कि आप पासवर्ड दर्ज किए बिना अपने रिमोट मशीन पर ssh कर सकते हैं। तेंदुए में सेटअप आखिरकार लॉगिन पर ssh- एजेंट का समर्थन करता है और सत्यापित करता है कि यह काम करता है:

ssh USER@HOSTNAME:

यदि यह आपको पासवर्ड या पासक के लिए संकेत दिए बिना लॉग इन करता है, तो आप आगे बढ़ने के लिए तैयार हैं।

इसके बाद, स्थापित करें sshfsऔर MacFuse को इंस्टालिंग के अनुसार sshfs 1.9 के साथ MacFuse 1.7 के साथ OS X तेंदुए पर 10.5.5 करें

यह पता लगाएं कि आप अपना दूरस्थ वॉल्यूम कहाँ माउंट करना चाहते हैं। /Volumesजब से यह प्रतीत होता है कि मैं ओएस एक्स स्वचालित रूप से निर्देशिका को हटा देता हूं, जब आप चीजों को अनमाउंट करते हैं तो मैं इसका उपयोग करने की अनुशंसा नहीं करूंगा। इसलिए इसके बजाय मैंने इस्तेमाल किया/mnt/HOSTNAME

mkdir -p / mnt / HOSTNAME

(जाहिर है, आप HOSTNAMEअपने रिमोट सर्वर के नाम से बदल देंगे ।)

फिर सुनिश्चित करें कि आप किसी पासवर्ड का उपयोग किए बिना किसी वॉल्यूम के रूप में अपनी दूरस्थ साइट को माउंट कर सकते हैं sshfs:

sshfs USER@HOSTNAME:PATH /mnt/HOSTNAME -oreconnect,allow_other,volname=VOLUME_NAME

जो भी आप चाहते हैं कि आपके वॉल्यूम का नाम फाइंडर में हो, VOLUME_NAME सेट करें। मैंने HOSTNAME का उपयोग किया। पेट वैकल्पिक है; जिसे आप दूरस्थ होस्ट पर माउंट करना चाहते हैं उसे निर्देशिका में सेट करें। यदि यह सेट नहीं है, तो यह आपके होम डायरेक्टरी का उपयोग करेगा।

यदि आपको कोई त्रुटि संदेश नहीं मिलता है, और जब आप एक दूरस्थ फ़ाइल दिखाते हैं, तो आप अगले चरण पर आगे बढ़ने के लिए तैयार हैं।ls /mnt/HOSTNAME

आपके द्वारा माउंट किए गए वॉल्यूम को अनमाउंट करें:

umount / mnt / HOSTNAME

अब आती है मुश्किल भरी पार्टी। लॉगिन पर अपना वॉल्यूम बढ़ाने के लिए आपको एक लॉन्चएजेंट आइटम बनाने की आवश्यकता होगी। यह अपने आप में बहुत आसान है। हालाँकि, यदि आपका सिस्टम मेरा जैसा कुछ भी है, तो इस मद में इसका SSH_AUTH_SOCK ठीक से सेट नहीं होगा, इसलिए यह पासवर्ड का उपयोग किए बिना दूरस्थ होस्ट में प्रवेश करने में सक्षम नहीं होगा। आपको स्वयं SSH_AUTH_SOCK सेट करना होगा।

सबसे पहले, एक रैपर बनाएं, sshfsजो आपके लिए SSH_AUTH_SOCK सेट करेगा। इसे आप जहां चाहें फाइल में रख दें। मैं सुझाव देता हूं /opt/local/bin/sshfs-authsock

#!/bin/bash
export SSH_AUTH_SOCK=$(ls -t /tmp/launch-*/Listeners | head -1)
/opt/local/bin/sshfs $*

मूल रूप से, यह फ़ाइल SSH_AUTH_SOCK को आपके tmp निर्देशिका में सबसे हाल के सॉकेट पर सेट करती है। ज्यादातर मामलों में, यह उचित होना चाहिए। यह विफल होने की संभावना नहीं है, और अगर यह होता है तो कोई सुरक्षा मुद्दा नहीं है।

अब आप अंत में लॉन्चड प्लिस्ट फ़ाइल बना सकते हैं। इसे अंदर डालें

~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs.plist

(यदि आपके मेजबान का पथ है, कहो, foo.niskala.orgऔर आपका पथ /tmp, तब आपका परिणाम फ़ाइल नाम होगा org.niskala.foo.tmp.sshfs.plist। यह सिर्फ एक सम्मेलन है, जो भी आप चाहते हैं, उस फ़ाइल का नाम लेने के लिए स्वतंत्र महसूस करें, लेकिन इसे समाप्त करने की आवश्यकता है .plist।)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>BACKWARDS_HOST_DNS.PATH.sshfs</string>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/local/bin/sshfs-authsock</string>
                <string>USER@HOSTNAME:</string>
                <string>/mnt/HOSTNAME</string>
                <string>-oreconnect,allow_other,volname=VOLUME_NAME</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

अब प्लिस्ट फाइल को लोड करें और देखें कि यह काम करता है या नहीं।

launchctl load ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs
launchctl start BACKWARDS_HOST_DNS.PATH.sshfs

यदि आपको कोई त्रुटि संदेश दिखाई देता है, तो देखें कि क्या वॉल्यूम ठीक से माउंट किया गया था:

ls / mnt / HOSTNAME

यदि आपकी दूरस्थ फ़ाइलें दिखाई देती हैं, तो बढ़िया है! हो गया!

यदि नहीं, तो उपयोग करें

launchctl unload ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs

यह करने के लिए संपादन करने से पहले फ़ाइल अनलोड करने के लिए है, तो का उपयोग ps auxwww | grep sshfsऔर killखोजने के लिए और किसी भी मारने के लिए sshfsफिर से प्रयास करने से पहले की प्रक्रिया।

संदर्भ:


3

मैं dag729 से शानदार जवाब अपडेट करना चाहता हूं। एल कैप्टन OS X पर OS X फ्यूज 2.8.3 के साथ चीजें थोड़ी अलग हैं:

  1. कुछ रास्ते बदले हैं
  2. ऑक्सफ्यूज़ को -fविकल्प के साथ अग्रभूमि मोड में चलने के लिए मजबूर किया जाना चाहिए
  3. SSH_AUTH_SOCKपहले से ही परिभाषित है इसलिए sshfs-authsockस्क्रिप्ट बनाने का कोई और कारण नहीं है

इसके अलावा, मैं allow_otherविकल्प (सुरक्षा कारणों से) का उपयोग नहीं करने की सलाह दूंगा और auto_cacheविकल्प का उपयोग सिर्फ इसलिए करूंगा क्योंकि यह उपयोगी लगता है। कृपया विवरण के लिए OS X फ्यूज माउंट विकल्पों की जांच करें

यहां वह ~/Library/LaunchAgents/NAME.sshfs.plistफ़ाइल है जिसका मैं उपयोग करता हूं:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>NAME.sshfs</string>
    <key>ProgramArguments</key>
    <array>
            <string>/usr/local/bin/sshfs</string>
            <string>[USER@]HOST:REMOTE_DIR</string>
            <string>MOUNT_DIR</string>
            <string>-oreconnect,auto_cache,volname=FINDER_VOLUME_NAME</string>
            <string>-f</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

कहाँ NAMEकिसी भी नाम आप की तरह है और बाकी चर काफी आत्म वर्णनात्मक हैं।


यदि किसी कारण से आपने SSH_AUTH_SOCKपरिभाषित नहीं किया है ( launchctl getenv SSH_AUTH_SOCKइसे जांचने के लिए कमांड चलाएँ ) तो एक सहायक स्क्रिप्ट बनाएँ, उदाहरण /usr/local/bin/sshfs-authsockके लिए निम्न सामग्री के साथ:

#!/bin/bash
export SSH_AUTH_SOCK=$(ls -t /tmp/com.apple.launchd.*/Listeners | head -1)
/usr/local/bin/sshfs $*

और इस स्क्रिप्ट sshfsको प्लिस्ट फ़ाइल से चलाएं । तो आपका ~/Library/LaunchAgents/NAME.sshfs.plistहोना चाहिए:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>NAME.sshfs</string>
    <key>ProgramArguments</key>
    <array>
            <string>/usr/local/bin/sshfs-authsock</string>
            <string>[USER@]HOST:REMOTE_DIR</string>
            <string>MOUNT_DIR</string>
            <string>-oreconnect,auto_cache,volname=FINDER_VOLUME_NAME</string>
            <string>-f</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

1

मैं dag729 के बहुत पूर्ण उत्तर में कुछ जोड़ना चाहूंगा।

यदि आपके पास शेर है और पुराने MacFuse के बजाय अब OS X फ्यूज है , तो ऊपर की प्रक्रिया बॉक्स से बाहर काम नहीं करेगी क्योंकि sshfs का रास्ता अलग है।

यदि आपके लिए ऐसा है, तो देखें कि आपके इंस्टॉलेशन का उपयोग करके sshfs कहाँ है

which sshfs

और उस रास्ते को / ऑप्ट / स्थानीय / बिन / sshfs-Cortsock स्क्रिप्ट में रखें।

मेरी स्थापना में, वह पथ / usr / स्थानीय / बिन / sshfs है और इसलिए मेरी स्क्रिप्ट है:

#!/bin/bash
export SSH_AUTH_SOCK=$( ls -t /tmp/launch-*/Listeners | head -1)
/usr/local/bin/sshfs $*

मैं पुष्टि कर सकता हूं कि बाकी अभी भी वैध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.