कॉन्फ़िगरेशन फ़ाइल में sftp -s सबसिस्टम विकल्प कैसे सेट करें


11

Sftp कमांड एक सबसिस्टम विकल्प (-s) का समर्थन करता है जो दूरस्थ उपयोगकर्ता को दूरस्थ sftp- सर्वर निष्पादन योग्य का चयन करने की अनुमति देता है, और इस तरह की प्रक्रिया में वैकल्पिक रूप से sudo में अपग्रेड करता है;

sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa

यह कमांड ssh क्लाइंट ऑप्शन को ~ / .ssh / config में प्यूरी और कस्टम पोर्ट और यूजर सेटिंग्स के पारदर्शी उपयोग की अनुमति देता है।

हालाँकि subsystemयह sftp विशिष्ट प्रतीत होता है, और इसलिए यह config फाइल में सेट नहीं होता है और ऐसा प्रतीत होता है कि इसे sftp के लिए कमांड लाइन विकल्प के रूप में सेट किया जाना है।

हालाँकि कुछ उपकरण sftp इनवोकेशन को लपेटते हैं ताकि सबसिस्टम विकल्प को सेट करना असंभव हो, और इसलिए उपयोगकर्ता पहुंच के साथ अटक जाता है।

क्या कुछ कॉन्फ़िगरेशन विकल्प फ़ाइल है जिसे मैं आमतौर पर ओपनश sftp के लिए सेट करने के लिए उपयोग कर सकता हूं?

वहाँ कुछ विन्यास फ़ाइल है जिस तरह से प्रभावी करने के लिए gnome nautilus अपने फ़ाइल प्रबंधक एकीकरण के लिए sftp को आमंत्रित करता है?


अद्यतन संभव हैसी-लेकिन-कामकाज समाधान है ...

तो यह पता चला है कि कोई स्पष्ट विन्यास फ़ाइल नहीं है जो sftp विकल्पों के लिए उपयोग करेगी, इसलिए मैंने अपने पथ में इसे डालकर अपने चयनित मेजबानों के लिए विकल्प को स्पष्ट रूप से जोड़ने के लिए एक सामान्य आवरण स्क्रिप्ट को संशोधित किया;

#!/bin/bash
#  Generic shell wrapper that performs an operation

OPERATION=/usr/bin/sftp
args=("$@")
#the final arg should contain a hostname of the form [user@]host[:path]
case "${args[@]: -1}" in
    myserver.com)
    exec $OPERATION -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" "$args"
    ;;
*)
   exec $OPERATION "$args" 
    ;;
esac

हालाँकि , आपके sudoers फ़ाइल के आधार पर, आमतौर पर sudo को चलाने के लिए एक tty की आवश्यकता होती है, इसलिए आपको ssh को "-t" विकल्प पास करना होगा, और अनुमान लगाना होगा कि क्या? ssh क्लाइंट कमांड के लिए कोई विन्यास विकल्प नहीं है जो कि ssh_config या ~ / .ssh / config फाइल में काम करता है। haha।

तो मैं एक और रैपर स्क्रिप्ट लिखता हूं कि प्रदान करने के लिए ...।

#!/bin/bash
#  Generic shell wrapper that performs an operation

OPERATION=/usr/bin/ssh
args=("$@")
#locating the hostname is not so simple with ssh
exec $OPERATION -tt "$args"

हालाँकि, मुझे अब अपने ~ / बिन / ssh रैपर फ़ाइल का उपयोग करने के लिए sftp प्राप्त करने में समस्या हो रही है, क्योंकि यह sftp में हार्ड कोडित और एक विकल्प "-S" द्वारा नियंत्रित प्रतीत होता है


आपका लक्ष्य क्या है? मैं आपकी आज्ञा का कोई लाभ नहीं समझता।
जिरीब

3
मैं ssh को बिना रूट यूजर लॉगिन के साथ चलाता हूं, जैसा कि हमारे बेस बिल्ड के अनुसार है, इसलिए यह sudo यूजर्स को उन टूल्स के जरिए रूट परमिशन के साथ फाइल में बदलाव करने की अनुमति देता है जो ग्नोम gvfs के साथ इंटीग्रेट होते हैं।
टॉम एच

जवाबों:


2

ssh_config(5)मैन पेज के अनुसार , आप sshd_configकॉन्फ़िगरेशन फ़ाइल में पथ को कॉन्फ़िगर कर सकते हैं :

 Subsystem
         Configures an external subsystem (e.g. file transfer daemon).
         Arguments should be a subsystem name and a command (with optional
         arguments) to execute upon subsystem request.

तो ऐसा लगता है कि आप ऐसा कर सकते हैं:

Subsystem sftp /usr/libexec/openssh/sftp-server -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server"

यह कॉन्फ़िगरेशन स्पष्ट रूप से सर्वर पर जाती है , क्लाइंट कॉन्फ़िगरेशन में नहीं। क्या यह वही है जिसकी आपको तलाश थी? नकारात्मक पक्ष, स्पष्ट रूप से, यह है कि हर sftp कनेक्शन रूट विशेषाधिकारों के साथ चलने का प्रयास करेगा, इसलिए यह आपकी फ़ाइलों तक गैर-रूट पहुंच को तोड़ देगा।


हाँ, मैं कुछ ग्राहक पक्ष की तलाश में था। हालांकि मेरे पास एक विचार है जिसे मैंने प्रश्न के साथ अद्यतन किया है।
टॉम एच

हम्म, मैं वास्तव में एक जीयूआई के साथ ही कमांड लाइन जवाब देना चाहूंगा। मुझे लगता है कि लार्क्स सही लाइनों पर है, लेकिन मुझे लगता है कि रिमोट सर्वर पर सबसिस्टम कमांड को एक स्क्रिप्ट की आवश्यकता होती है जो स्वयं लॉगिन करने का प्रयास करने वाले उपयोगकर्ता के अधिकारों को "पता" करने में सक्षम है, या जो कृपापूर्वक सक्षम है ( चुपचाप) एक मानक sftp लॉगिन में विफल।
जूलियन नाइट

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