जवाबों:
अपनी स्थानीय मशीन से आप मध्यवर्ती मेजबान के माध्यम से अंतिम मेजबान के लिए एसएसएच सुरंग बना सकते हैं:
ssh user@intermediate -L 2000:final:22 -N
यह आपके लोकलहोस्ट पर पोर्ट 2000 को खोलेगा, जो कि मध्यवर्ती होस्ट के माध्यम से सुरंग बनाकर, सीधे पोर्ट 22 के अंतिम सर्वर से जुड़ जाएगा। अब पोर्ट 2000 पर sftp के साथ एक और प्रॉम्प्ट में अंतिम सर्वर के माध्यम से सुरंग बनाने के लिए, यह देखते हुए कि यहां निर्दिष्ट उपयोगकर्ता अंतिम होस्ट के लिए है:
sftp -P 2000 user@localhost
ऐसा लगता है कि superuser.com या serverfault.com पर है।
आप 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 को अंतिमहोस्ट करने के लिए उपयोग कर सकते हैं, और यह स्वचालित रूप से सुरंग को आमंत्रित करेगा। एकमात्र असंगत हिस्सा यह है कि यह दो पासवर्डों के लिए संकेत देगा (मध्यवर्तीहॉस्ट इसके बाद अंतिमहोस्ट), लेकिन यदि आप चाहते हैं कि आप इसे समाप्त कर सकते हैं और साथ ही साथ एसएसएच कीपर्स ...
exec
आवश्यक? (यह उस भाग के बिना यहाँ ठीक काम करता है।)
आप अपने मशीन पर चल रहे ssh प्रक्रिया में डेटा को पाइप कर सकते हैं, फिर मध्यवर्ती मशीन पर एक कमांड चला सकते हैं जो स्टड को पढ़ता है और उपयुक्त के रूप में sftp को भेजता है।
यह आपके स्थानीय मशीन पर एक oneliner में किया जा सकता है, हालांकि ssh के लिए तर्कों के उद्धरण के लिए देखभाल की आवश्यकता होगी। मैं अभी अपने फोन पर हूँ इसलिए दुर्भाग्य से विवरण टाइप नहीं कर सकते। शायद कोई और इस जवाब को एक अभ्यास के रूप में पूरा कर सकता है!
मुझे लगता है कि अंतिम मेजबान फ़ायरवॉल है और मैं केवल उन तरीकों पर अनुमान लगा सकता हूं जो आप इसके चारों ओर जाने के लिए उपयोग कर सकते हैं।
उदाहरण के लिए - अपने स्थानीय मशीन से ssh को उजागर करें, फिर पहले मेजबान को ssh, फिर दूसरे को ssh और अंतिम मेजबान से sftp को अपनी मशीन पर भेजें।
बता दें कि A और B पहले और दूसरे होस्ट हैं। और कॉपी की जाने वाली फाइल foo है
Sftp के बजाय, आप निम्न का उपयोग कर सकते हैं
बिल्ली फू | ssh ए "बिल्ली -> फू"
अब, आप इनमें से एक साथ डेज़ी-चेन 2 कर सकते हैं
बिल्ली फू | ssh ए "बिल्ली - | ssh B \" बिल्ली -> फू \ ""