जवाबों:
यदि आप एक दूरस्थ मशीन बनाए रखते हैं, तो उस मशीन की फाइलसिस्टम को स्थानीय रूप से माउंट करने के लिए वास्तव में उपयोगी हो सकता है ताकि वह फाइलों को स्थानांतरित कर सके। 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
फिर से प्रयास करने से पहले की प्रक्रिया।
संदर्भ:
मैं dag729 से शानदार जवाब अपडेट करना चाहता हूं। एल कैप्टन OS X पर OS X फ्यूज 2.8.3 के साथ चीजें थोड़ी अलग हैं:
-f
विकल्प के साथ अग्रभूमि मोड में चलने के लिए मजबूर किया जाना चाहिए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>
मैं 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 $*
मैं पुष्टि कर सकता हूं कि बाकी अभी भी वैध है।