क्या SSH सत्र में सर्वर से फ़ाइलों को खींचने के लिए एक सुविधाजनक तरीका है?


6

मैं अक्सर काम के लिए क्लस्टर नोड में एसएसएच करता हूं और प्रसंस्करण के बाद विश्लेषण के लिए अपने स्थानीय मशीन पर कई परिणाम वापस खींचना चाहता हूं। आमतौर पर, ऐसा करने के लिए मैं सर्वर से scp करने के लिए एक स्थानीय शेल का उपयोग करता हूं, लेकिन इसके लिए बहुत अधिक पथ हेरफेर की आवश्यकता होती है। मैं इंटरएक्टिव एफ़टीपी जैसे सिंटैक्स का उपयोग करना पसंद करूंगा और सर्वर से अपने स्थानीय pwd में केवल 'पुल' फाइलें।

एक और संभावित समाधान हो सकता है कि मेरे क्लाइंट कंप्यूटर को स्वचालित रूप से ssh उपनाम के रूप में सेट करने का कोई तरीका हो ताकि कुछ ऐसा हो

scp results home:~/results

उम्मीद के मुताबिक काम करेंगे।

वहाँ किसी भी अस्पष्ट SSH चाल है कि यह मेरे लिए क्या करेंगे?


ग्रैविटी के उत्तर से कार्य करना , कॉन्फिग फाइलों में एक पूर्ण समाधान कुछ इस तरह है

स्थानीय। ssh / config:

Host ex
    HostName ssh.example.com
    RemoteForward 10101 localhost:22

ssh.example.com। ssh / config:

Host home
    HostName localhost
    Port 10101

जो मुझे ठीक उसी तरह कमांड करने देता है

scp results home:

फ़ाइल को मेरे होम मशीन पर स्थानांतरित करना।

जवाबों:


5

मैं इंटरएक्टिव एफ़टीपी जैसे सिंटैक्स का उपयोग करना पसंद करूंगा और सर्वर से अपने स्थानीय pwd में केवल 'पुल' फाइलें।

का उपयोग करें sftp

(संकेत: आप नहीं कर सकते हैं या नहीं एक नई विंडो खोलने के लिए चाहते हैं, तो आप दबाकर SSH कनेक्शन को निलंबित कर सकते हैं Enter, ~, CtrlZ, आपकी फ़ाइलों को हस्तांतरण, और साथ SSH को फिर से शुरू fg।)

एक अन्य संभावित समाधान अपने क्लाइंट कंप्यूटर को स्वचालित रूप से ssh उपनाम के रूप में सेट करने का कोई तरीका हो सकता है

कुछ तरीके हैं।

  • के लिए स्टेटिक उपनाम sshऔर scp- इसे अपने में जोड़ें ~/.ssh/config:

    Host home
        # If you don't have a domain name, check out DynDNS...
        # ...or just use your IP address.
        Hostname homepc.somedomain.tld
    
        # If necessary, uncomment:
        #User john
        #Port 1234
    

    उपयोग:

    scp foo home:
    

    (यदि आप इसके बाद कोई रास्ता नहीं देते हैं :, तो फ़ाइल आपके होम डायरेक्टरी में जाएगी।)

  • SSH_CLIENTपर्यावरण चर का उपयोग करें ।

    export client=${SSH_CLIENT%% *}
    if [[ $client == *:* ]]; then
        client="[$client]"
    fi
    

    उस में ~/.profileया ~/.bash_profileजहाँ भी आप चाहते हैं, तब उपयोग करें, $clientजब आपको अपने स्वयं के पते की आवश्यकता हो।

    scp foo "$client:"
    
  • दोनों को मिलाएं।

    ~/.ssh/config:

    Host client
        ProxyCommand ~/bin/reverse-connect %p
    

    ~/bin/reverse-connect:

    #!/bin/sh
    if [[ $SSH_CLIENT ]]; then
        client=${SSH_CLIENT%% *}
    else
        echo "I don't know your address." >&2
        exit 1
    fi
    if [[ $client == *:* ]]; then
        client="[$client]"
    fi
    
    port=${1:-22}
    
    exec socat - "tcp:$client:$port"
    

    उपयोग:

    scp foo client:
    

SSH_CLIENT लगभग सही है! अगर मैं एक राउटर के पीछे हूँ, तो क्या होगा? लैपटॉप से ​​कनेक्ट होने के बाद से यह आम है। मैं किसी प्रकार की रिवर्स एसश टनलिंग योजना की कल्पना कर रहा था, लेकिन मुझे नहीं पता कि इसे कैसे स्थापित किया जाए।
जे। अब्राहमसन

@tel: विधि 1, पोर्ट फ़ॉरवर्डिंग: किसी भी पोर्ट को चुनें और उसे अपने कंप्यूटर पर 22 / tcp पोर्ट करने के लिए फ़ॉरवर्ड करें। scpफ़ाइलों को कॉपी करते समय उसी पोर्ट को बताएं ।
ग्रैविटी

@tel: विधि 2, SSH के साथ "रिवर्स फॉरवर्डिंग": ssh -R 2345:localhost:22आपके कंप्यूटर को रिमोट सर्वर से localhostपोर्ट के रूप में पहुंच योग्य बना देगा 2345
grawity

6

क्या आपने sshfs की कोशिश की है? यह आसान है

> sshfs hostname: mountpoint

तथा

fusermount -u mountpoint

और फिर आप सभी क्लासिक और बेसिक फ़ाइल हेरफेर कमांड का उपयोग कर सकते हैं।

http://en.wikipedia.org/wiki/SSHFS

http://fuse.sourceforge.net/sshfs.html


sshfsहै शानदार । से अधिक प्रयोग करने योग्य sftpऔर gftp
new123456

0

आप scpअपने स्थानीय होस्ट से उपयोग कर सकते हैं । जैसे कमांड का उपयोग करें scp server:file .

आपके अन्य विकल्पों में शामिल हैं sftpऔर sshfsजैसा कि पहले ही उल्लेख किया गया है।

इन सभी के लिए मैं अधिकृत कुंजियों का उपयोग करूंगा। यह आपकी कुंजी की रक्षा करने के लिए पासवर्ड के लिए अधिक सुरक्षित है। मैं ssh- एजेंट का उपयोग करने के लिए ssh की जरूरत के अनुसार सेवा करता हूं। कमांड ssh-add आपको आपकी कुंजी के पासवर्ड के लिए संकेत देगा और कुंजी को ssh-Agent में लोड करेगा।

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