SSH सर्वर के माध्यम से फाइल कैसे डाउनलोड करें?


31

मेरे पास यूएसए (लिनक्स बॉक्स बी), और मेरे होम पीसी (लिनक्स बॉक्स ए) में एक सर्वर है, और मुझे वेबसाइट से फ़ाइल डाउनलोड करने की आवश्यकता है,

मुद्दा यह है कि ए से एक फाइल डायरेक्ट डाउनलोड करना बहुत धीमा है, इसलिए मुझे बी में लॉग इन करते समय फाइल डाउनलोड करने की जरूरत है, और sftpए से फाइल प्राप्त करें।

क्या कोई ऐसा तरीका है जिससे मैं फ़ाइल डाउनलोड कर सकता हूं और केवल एक लाइन कमांड के माध्यम से सीधे प्रॉक्सी के रूप में बी का उपयोग कर सकता हूं?

जवाबों:


46

(अजीब स्थिति, इंटरनेट राउटिंग के लिए त्रिकोण असमानता की तरह कुछ भी नहीं है ?)

वैसे भी, निम्नलिखित, कोशिश पर एक , sshमें बी एक साथ -Dतर्क,

ssh -D 1080 address-of-B

जो SOCKS5 प्रॉक्सी के रूप में कार्य करता है 127.0.0.1:1080, जिसका उपयोग SOCKS5 अनुमानित कनेक्शन का समर्थन करने वाले किसी भी चीज़ के द्वारा किया जा सकता है। जाहिर है,wget पर्यावरण चर का उपयोग करके ऐसा कर सकते हैं

export SOCKS_SERVER=127.0.0.1:1080
wget http://server-C/whatever

ध्यान दें कि कभी-कभी curlअधिक उपयोगी होता है (यानी मुझे यकीन नहीं है कि अगर wgetआप SOCKS5 के माध्यम से होस्टनाम लुकअप कर सकते हैं, लेकिन यह आपकी चिंताओं में से एक नहीं है जो मुझे लगता है); भी फ़ायरफ़ॉक्स ऐसे SOCKS5 प्रॉक्सी के माध्यम से पूरी तरह से काम करने में सक्षम है।

संपादित करें मैंने अभी देखा है कि आप एक-लाइन समाधान की तलाश कर रहे हैं। खैर, कैसे के बारे में

ssh address-of-B 'wget -O - http://server-C/whatever' >> whatever

यानी पुनर्निर्देशन wget-fetched उत्पादन करने के लिए stdout, और एक फ़ाइल के लिए स्थानीय उत्पादन ( दूरस्थ रूप से sshचलाने से wget) पुनर्निर्देशित ।

यह काम करने लगता है, wgetउत्पादन बस थोड़ी भ्रामक ( "है को बचाया - "), आप जोड़कर से छुटकारा पा सकते -qकरने के लिए wgetकॉल।


6
स्पष्ट रूप से SOCKS_SERVERपर्यावरण चर का Ubuntu 14.04 पर कोई प्रभाव नहीं है।
कास्परड

4
इस अन्य उत्तर के अनुसार , चर के wgetलिए कोई समर्थन नहीं है SOCKS_SERVER। उस उत्तर का उपयोग करने का सुझाव देता है curl --socks5-hostnameया curl --socks5
डेनिलसन सा मैया

@kasperd, तो, क्या यह सिर्फ ubuntu है जहां यह काम नहीं करता है, या क्या चर बिल्कुल भी नहीं है? ऐसा प्रतीत होता है कि चर socksifyइसके बजाय हो सकता है ।
cnst

@cnst में मुझे कोई सबूत नहीं मिला है कि किसी भी संस्करण के लिए मोज़े का समर्थन है। socksifyसेटिंग नहीं है, यह एक अलग कार्यक्रम है।
कैस्पर

इसलिए, मूल रूप से, यदि आप SOCKS_SERVERपर कोई प्रभाव पड़नाwget चाहते हैं, तो आपको ports.su/security/dante को स्थापित करना होगा , और उसके बाद socksify wgetबस चलाना होगाwget
cnst 5'15

3

एक और दृष्टिकोण यह हो सकता है कि आप सामान्य रूप से लॉग इन करें B, जहां आप एक screenसत्र शुरू करते हैं । वहाँ आप wgetअपनी फ़ाइलों का - सभी एक निर्देशिका में करते हैं।

और वहां कार्यक्रम खुशी से चल सकता है; आप बस स्क्रीन से अलग हो जाते हैं, लेकिन इसे पृष्ठभूमि में चलने दें।

यदि डाउनलोड समाप्त हो गए हैं (हो सकता है कि पहले भी), तो आप डेटा Bका Aउपयोग करके rsync(मेरी वरीयता) से फ़्रेच कर सकते हैं।


2

एक अन्य प्रश्न के उत्तर से प्रेरित होकर , मैं प्रॉक्सिचिन्स-एनजी (जो प्रोक्सीसाइन्स का नया संस्करण है ) का उपयोग करने का सुझाव देता हूं ।

  1. डाउनलोड करें, संकलन करें, और वैकल्पिक रूप से प्रॉक्साइन्स-एनजी स्थापित करें ।
  2. proxychains.confवर्तमान निर्देशिका में या पर ~/.proxychains/proxychains.conf, या पर एक फ़ाइल बनाएँ /etc/proxychains.conf
    • वैकल्पिक रूप से, एक फ़ाइल कहीं और, या किसी अन्य नाम से बनाएं, और निर्दिष्ट करें कि -fकमांड-लाइन तर्क के माध्यम से, या PROXYCHAINS_CONF_FILEपर्यावरण चर के माध्यम से ।
    • एक नमूना विन्यास फाइल उपलब्ध है। सबसे प्रासंगिक विकल्प बहुत अंत में हैं।
  3. अपनी proxychains.confफ़ाइल में, जोड़ें:

    [ProxyList]
    socks5 127.0.0.1 1234
    
  4. भागो ssh -D 1234 your_host_b। यह ssh को लोकलहोस्ट पर पोर्ट 1234 पर सुनेगा, और SOCKS प्रॉक्सी के रूप में अपने रिमोट होस्ट का उपयोग करेगा।

    • ssh -ND 1234 your_host_bइसके बजाय , वैकल्पिक रूप से चलाएं । -Nदूरस्थ सर्वर पर किसी भी कमांड को चलाने से ssh को रोक देगा (अर्थात यह एक शेल नहीं खोलेगा)।
  5. चलाएँ: proxychains4 yourcommandhere yourparametershere। कुछ उदाहरण देखें:
    • proxychains4 wget -O - http://ifconfig.co/
    • proxychains4 -q links http://ifconfig.co/

2

विकल्प 0:

wgetSOCKS5 प्रॉक्सी से उपयोग करने के लिए ssh, आपको उपयोगिता के साथ विकल्प security/danteका उपयोग करने के लिए पैकेज को स्थापित करना होगा ।SOCKS_SERVERsocksify

sudo pkg_add dante

इसके बाद, आप पृष्ठभूमि में एक SSH कनेक्शन खोलें:

ssh -N -C -D1080 user@hostB &

और मोजे के माध्यम से एक SOCKS5 प्रॉक्सी के माध्यम से wget का उपयोग करें:

env SOCKS_SERVER=127.0.0.1:1080 socksify wget http://website-C

विकल्प 1:

बस stdoutसर्वर पर फ़ाइल को पाइप करें, और इसे stdinअपने कार्य केंद्र से पढ़ें ।

ssh -C user@hostB "wget -O- http://website-C" >> file-from-website-C

1

आप बॉक्स A से बॉक्स B तक एक ssh सुरंग बना सकते हैं और बॉक्स A में रूटिंग टेबल में जोड़ सकते हैं, वेबसाइट C सुरंग से बॉक्स B तक पहुंच रही है। आपको बॉक्स B पर पैकेट अग्रेषण की अनुमति देनी होगी।

यहाँ आप एक बहुत अच्छा स्टेप-बाय-स्टेप ट्यूटोरियल देख सकते हैं ...


1

आपको मशीन पर एक सुरंग बनाने की आवश्यकता होगी B tha वेबसाइट सी पर कॉल को पुनर्निर्देशित करेगा। लेकिन मैं हैरान हूं कि यह तेजी से क्यों होगा, जब तक कि कुछ प्रतिबंधों के रूप में आपका आईएसपी नहीं।

मैं एक oneliner नहीं जानता, लेकिन यह बहुत अधिक जटिल नहीं है।

मशीन A पर, आप करते हैं (मैंने 11111 को अनियमित रूप से लिया, आप जो भी चाहें तब तक ले सकते हैं जब तक कि यह> 1024 हो, या आपको रूट होना होगा)

ssh -f -C -N -L 11111:C:80 username@B

B पर उपयोगकर्ता नाम वह है जिसे आप B. से कनेक्ट करने के लिए उपयोग करते हैं। यह मशीन B पर पोर्ट 11111 पर एक सुरंग बनाना चाहिए जो कि पोर्ट 80 पर रीडायरेक्ट करे (HTTP में वेब साइट 443 HTTPS के लिए उपयोग) मशीन C पर (मुझे आशा है कि मैंने गड़बड़ नहीं की आदेश ;) )

फिर आप मशीन A से मशीन B से सीधे फाइल डाउनलोड कर सकते हैं। मैं मान रहा हूं कि फाइल ऐसी है जिस पर http://C/path/to/fileआप उपयोग करेंगे:

wget http://B:11111/path/to/file

क्या यह कार्य केवल तभी नहीं होगा जब फ़ाइल HTTP 1.1 नाम-आधारित वर्चुअल होस्टिंग के बिना उपलब्ध हो? चूंकि
WET

@ माइकलकॉर्जलिंग मेरे पास आपको जवाब देने के लिए पर्याप्त ज्ञान नहीं है।
ह्यूजेंस

1

आप इसे पोर्ट फ़ॉरवर्डिंग (ssh टनलिंग) के माध्यम से कर सकते हैं। यहाँ एक संसाधन है: http://www.jfranken.de/homepages/johannes/vortraege/ssh2_inhalt.en.html#ToC9

अनिवार्य रूप से, आपको बी पर पोर्ट अग्रेषण स्थापित करना चाहिए। जब ​​ए, बी को भूल जाता है, तो बी पैकेट को सी को भेज देगा और परिणाम ए को वापस भेज देगा।

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