मैं एक मध्यवर्ती सर्वर के लिए sftp चाहिए?


11

मैं सीधे किसी विशेष मेजबान में sftp नहीं कर सकता। अपने होम मशीन से होस्ट में एक फ़ाइल ले जाने के लिए, मुझे एक फाइल को इंटरमीडिएट होस्ट में भेजना होगा; मध्यवर्ती मेजबान में ssh; और अंतिम गंतव्य के लिए फ़ाइल sftp। क्या इस तरह के पागलपन से बचना संभव है?

जवाबों:


28

अपनी स्थानीय मशीन से आप मध्यवर्ती मेजबान के माध्यम से अंतिम मेजबान के लिए एसएसएच सुरंग बना सकते हैं:

ssh user@intermediate -L 2000:final:22 -N

यह आपके लोकलहोस्ट पर पोर्ट 2000 को खोलेगा, जो कि मध्यवर्ती होस्ट के माध्यम से सुरंग बनाकर, सीधे पोर्ट 22 के अंतिम सर्वर से जुड़ जाएगा। अब पोर्ट 2000 पर sftp के साथ एक और प्रॉम्प्ट में अंतिम सर्वर के माध्यम से सुरंग बनाने के लिए, यह देखते हुए कि यहां निर्दिष्ट उपयोगकर्ता अंतिम होस्ट के लिए है:

sftp -P 2000 user@localhost

ऐसा लगता है कि superuser.com या serverfault.com पर है।


धन्यवाद, मैं कोशिश करूँगा कि; और आप सही हैं यह गलत फोरम है; माफ़ करना।

उपयोगकर्ता को @ लोकलहोस्ट पासवर्ड देने के बाद मुझे संदेश प्राप्त हुआ: संदेश प्राप्त हुआ बहुत लंबा 1131376238
user74094

14

आप SSTP कनेक्शन पर एक SFTP कनेक्शन को पारदर्शी रूप से सुरंग करने के लिए SFTP के प्रोक्सीकोमैंड विकल्प का उपयोग कर सकते हैं (व्हाइटफैंग 34 के उत्तर के समान, लेकिन SSH कनेक्शन के स्टड एंड स्टडआउट पर, एक फारवर्ड लोकल टीसीपी पोर्ट के बजाय):

sftp -o "ProxyCommand=ssh -e none user@intermediatehost exec /usr/bin/nc %h %p 2>/dev/null" user@finalhost

(यह मानते हुए कि मध्यवर्ती होस्ट ने netcat को / usr / bin / nc के रूप में स्थापित किया है - यदि नहीं, तो आपको टीसीपी सत्र में गेटवे स्टिंग और स्टडआउट के कुछ बराबर तरीके खोजने / स्थापित करने पड़ सकते हैं।)

इस विकल्प के बारे में वास्तव में अच्छा यह है कि आप इसे अपनी ~ / .ssh / config फ़ाइल में जोड़ सकते हैं, जो इसे पारदर्शी बनाता है:

Host finalhost
    ProxyCommand ssh -e none user@intermediatehost exec nc %h %p 2>/dev/null

उस प्रविष्टि के साथ, आप sftp, scp, और ssh को अंतिमहोस्ट करने के लिए उपयोग कर सकते हैं, और यह स्वचालित रूप से सुरंग को आमंत्रित करेगा। एकमात्र असंगत हिस्सा यह है कि यह दो पासवर्डों के लिए संकेत देगा (मध्यवर्तीहॉस्ट इसके बाद अंतिमहोस्ट), लेकिन यदि आप चाहते हैं कि आप इसे समाप्त कर सकते हैं और साथ ही साथ एसएसएच कीपर्स ...


धन्यवाद गॉर्डन। यह संदेश के साथ दोनों पासवर्ड लेता है: संदेश प्राप्त हुआ बहुत लंबा 1131376238
user74094

यह कनेक्शन में कुछ लगता है - शायद मेजबानों में से एक पर एक लॉगिन स्क्रिप्ट, शायद nc - कनेक्शन पर कुछ अतिरिक्त पाठ लिख रहा है जो sftp को भ्रमित कर रहा है ( इस FAQ को snailbook.com पर देखें )। 1131376238 एससीआई वर्ण "कॉन" का दशमलव एन्कोडिंग है, इसलिए यह संभवतः "कनेक्टिंग टू ..." "कनेक्टेड फ्रॉम ..." या शायद "कनेक्शन विफल" जैसा संदेश है। Sftp के बजाय ssh के साथ इसे आज़माएं, देखें कि क्या संदेश स्पष्ट रूप से छपा है और शायद आप बता सकते हैं कि यह कहां से आ रहा है।
गॉर्डन डेविसन

ssh ने ठीक काम किया। मुझे यह भी उल्लेख करना चाहिए कि मुझे अक्सर इस सवाल का सामना करना पड़ता है: मेजबान की XXXXX की प्रामाणिकता (<प्रॉक्सी कमांड के लिए कोई होस्ट नहीं) 'स्थापित नहीं की जा सकती। RSA कुंजी फिंगरप्रिंट 37: 40: d4: c7: आदि है। क्या आप वाकई कनेक्टिंग जारी रखना चाहते हैं (हां / नहीं)? हां
user74094

गॉर्डन, बहुत उपयोगी! मैं कमांड लाइन फू ओनेलिनर्स के अपने टेक्स्ट फाइल में इसे जोड़ रहा हूं। अनेक अनेक धन्यवाद!
ट्रैविस लेलेउ

है execआवश्यक? (यह उस भाग के बिना यहाँ ठीक काम करता है।)
समान

3

आप अपने मशीन पर चल रहे ssh प्रक्रिया में डेटा को पाइप कर सकते हैं, फिर मध्यवर्ती मशीन पर एक कमांड चला सकते हैं जो स्टड को पढ़ता है और उपयुक्त के रूप में sftp को भेजता है।

यह आपके स्थानीय मशीन पर एक oneliner में किया जा सकता है, हालांकि ssh के लिए तर्कों के उद्धरण के लिए देखभाल की आवश्यकता होगी। मैं अभी अपने फोन पर हूँ इसलिए दुर्भाग्य से विवरण टाइप नहीं कर सकते। शायद कोई और इस जवाब को एक अभ्यास के रूप में पूरा कर सकता है!


0

मुझे लगता है कि अंतिम मेजबान फ़ायरवॉल है और मैं केवल उन तरीकों पर अनुमान लगा सकता हूं जो आप इसके चारों ओर जाने के लिए उपयोग कर सकते हैं।

उदाहरण के लिए - अपने स्थानीय मशीन से ssh को उजागर करें, फिर पहले मेजबान को ssh, फिर दूसरे को ssh और अंतिम मेजबान से sftp को अपनी मशीन पर भेजें।


0

बता दें कि A और B पहले और दूसरे होस्ट हैं। और कॉपी की जाने वाली फाइल foo है

Sftp के बजाय, आप निम्न का उपयोग कर सकते हैं

बिल्ली फू | ssh ए "बिल्ली -> फू"

अब, आप इनमें से एक साथ डेज़ी-चेन 2 कर सकते हैं

बिल्ली फू | ssh ए "बिल्ली - | ssh B \" बिल्ली -> फू \ ""


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