क्या यह संभव है कि रिमोट से लोकल में लॉग इन किए बिना किसी रिमोट से एससीपी संभव हो और बिना लोकल का आईपी एड्रेस पता चले?


31

मैं नियमित रूप से अपने स्थानीय मशीन के लिए दूरस्थ टर्मिनल सत्र से एक फ़ाइल की प्रतिलिपि बनाना चाहता हूं। आमतौर पर मैं दूरस्थ सत्र से लॉग आउट करता हूं और फ़ाइल को दूरस्थ से स्थानीय में कॉपी करने के लिए स्थानीय से एक scp स्थानांतरण कहता हूं। लेकिन यह थोड़ा लंबा घुमावदार लगता है। मैं समय बचाने के लिए SSH पर रिमोट में लॉग इन फ़ाइल को स्थानांतरित करना चाहूंगा। मेरी स्थानीय मशीन एक गतिशील आईपी रेंज से इंटरनेट से जुड़ी हुई है इसलिए मुझे कभी भी यकीन नहीं है कि इसे दूर से कैसे जोड़ा जाए। लेकिन निश्चित रूप से, जैसा कि दूरस्थ सत्र मेरे लैपटॉप से ​​निकलता है, मेरे लैपटॉप पर वापस जाने के लिए scp में एक शॉर्टकट होना चाहिए ... सही?

जवाबों:


20

आप इसके लिए SSH टनलिंग का उपयोग कर सकते हैं ।

टनलिंग का उपयोग करके आप टीसीपी पोर्ट को या तो अपने स्थानीय मशीन से रिमोट मशीन पर, या रिमोट मशीन से अपने स्थानीय मशीन पर फॉरवर्ड कर सकते हैं। मैं इसे अक्सर फॉरवर्ड करने के लिए उपयोग करता हूं जैसे एसएमटीपी या आईएमएपी पोर्ट एक रिमोट मशीन से फायरवॉल के पीछे से मेरी स्थानीय मशीन तक (और फिर स्थानीय रूप से सेवाओं तक पहुंच, जैसे कि वे स्थानीय रूप से चल रहे थे)।

पोर्ट 22 (SSH) को आगे करने के लिए आप स्थानीय मशीन से लेकर रिमोट मशीन तक यह प्रयास करें:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(ध्यान दें कि लोकलहोस्ट रिमोट मशीन के स्थानीय नाम को संदर्भित करता है)

इसे चलाने के बाद आपको घर का उपयोग करने में सक्षम होना चाहिए:

ssh -p12345 yourlocaluser@127.0.0.1

Scp का उपयोग करते समय, आप कुछ ऐसा करेंगे (जैसे कि port के अग्र भाग के लिए scp में अपरकेस पी है):

scp -P12345 filename 127.0.0.1:/tmp/filename

पोर्ट दूसरी दिशा में (रिमोट से स्थानीय तक) -R के बजाय -L का उपयोग करता है।

उपरोक्त आदेश यह मानते हैं कि आप टर्मिनल ssh क्लाइंट का उपयोग कर रहे हैं। विंडोज के लिए PuTTY जैसे ग्राफिकल क्लाइंट भी टनलिंग का समर्थन करते हैं


ओपी के सवाल का जवाब नहीं देता जिसका आईपी स्थिर नहीं है।

2
जब तक मुझे कुछ याद न हो जाए, तब तक ओपी के लिए यह ठीक होना चाहिए कि वह वर्तमान में रिमोट मशीन से वापस स्थानीय में जुड़ जाए। सुरंग का निर्माण एसएसएच सत्र के माध्यम से किया जाएगा। जैसा कि SSH कनेक्शन डायनेमिक लोकल मशीन से रिमोट पर सेटअप होता है, यह सफल होगा और इस प्रकार रिमोट मशीन पर एक श्रवण पोर्ट को सेटअप करने में सक्षम होगा, जहां से यह वापस आया था।

इसके लिए ओपी को अपने स्थानीय मशीन पर एसएसएच सर्वर स्थापित करने और प्रमाणीकरण का ध्यान रखना होगा। तो यह कुछ उपयोग मामलों में इसके लायक होने से अधिक परेशानी हो सकती है।
सेप्टाग्राम

यह न केवल डायनेमिक आईपी के लिए काम करता है, बल्कि यह फायरवॉल पर भी काम करता है जो रिमोट से लोकल तक ssh कनेक्शन को प्रतिबंधित करता है। बहुत उपयोगी जवाब!

3
~Cभागने के साथ अग्रेषित करने वाले रिमोट पोर्ट को सेट करके आप इसे और भी सुविधाजनक बना सकते हैं। बस टाइप करें <Enter>~C-R 12345:localhost:22<Enter>, और आपके पास पहले से ही स्थापित एसएसएच सत्र छोड़ने के बिना आपकी सुरंग है।

6

दूरस्थ मशीन से कमांड लाइन में निम्नलिखित का प्रयास करें, आपको अपने राउटर पर पोर्ट अग्रेषण को सक्षम करने की आवश्यकता हो सकती है।

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

स्रोत: जिस होस्ट से आप जुड़ रहे हैं उस पर आसानी से एक फ़ाइल वापस भेजें (कमांडलाइनफू.कॉम)


1
यह समझाने के लिए कि लोगों के लिए यह क्या करता है, यह ${SSH_CLIENT%% *}आपके स्थानीय मशीन के आईपी का उत्पादन करता है। इसलिए संपूर्ण कमांड फ़ाइल ट्रांसफर के लिए रिमोट मशीन से आपके स्थानीय मशीन में एक scp सेशन खोलती है। यह केवल तभी किया जा सकता है जब आप रिमोट मशीन से अपने स्थानीय मशीन को एसएसएच कर सकते हैं।
बिज़ी

2
यह export ME="${SSH_CLIENT%% *}"आपके शेल आरसी फ़ाइल में कुछ जोड़कर और बेहतर बनाया जा सकता है । इसके बाद आप बस इस्तेमाल कर सकते हैंscp <file> $ME:<local path>
kralyk

महान, यह काम करता है, हालांकि ध्यान दें: यदि आप वीपीएन के माध्यम से लॉगिन करते हैं तो फाइलें आपके मशीन पर समाप्त नहीं होंगी, लेकिन कहीं और।
kap

1

शायद zssh ?

zssh (Zmodem SSH) सुरक्षित शेल (ss) का उपयोग करते हुए दूरस्थ रूप से फ़ाइलों को दूरस्थ मशीन में स्थानांतरित करने का एक कार्यक्रम है। यह एक अन्य सत्र खोलने और स्वयं को फिर से प्रमाणित करने के बिना फ़ाइलों को स्थानांतरित करने की अनुमति देने के लिए एक सुविधाजनक विकल्प है।

zsh ssh के लिए एक इंटरैक्टिव आवरण है

यह ज़मोडम फ़ाइल स्थानांतरण के आदरणीय आरजे, एसजे कार्यान्वयन का उपयोग करता है।


1

इस सवाल को उकेरा, यह कुछ ऐसा है जिसे मैं आसानी से हासिल करना चाहूंगा ।

यहाँ संबंधित जवाब है: जब मैं अपने घरेलू नेटवर्क के बाहर हूं तो मैं रिमोट मशीन से स्थानीय मशीन पर एससीपी कैसे कर सकता हूं?

आपको अपने नेटवर्क के बाहर से ssh तक पहुंचने की अनुमति देने की आवश्यकता है। यह आपके ब्रॉडबैंड राउटर पर एक पोर्ट को आपके सर्वर के लैन आईपी पर अग्रेषित करके किया जाता है। हालाँकि, बाहर से ssh पहुँच की अनुमति देने के साथ कुछ सुरक्षा चिंताएँ हैं, इसलिए आप ssh को सुरक्षित करने के लिए तरीकों पर गौर करना चाहते हैं, कण-आधारित प्रमाणीकरण और पूरी तरह से पासवर्ड प्रमाणीकरण अक्षम करना।


0

एक समाधान यह होगा कि आप स्थानीय मशीन पर ssh सत्र को स्थगित करें, स्थानीय मशीन पर प्रतिलिपि का प्रदर्शन करें और फिर अपना ssh सत्र फिर से शुरू करें जहाँ आपने छोड़ा था।

उदाहरण के लिए, मान लें कि मैं myuser @ रिमोट से जुड़ा हुआ हूं , और मैं अपने स्थानीय कंप्यूटर पर फ़ाइल lol.txt को कॉपी करना चाहता हूं। पहले मैं अपने स्थानीय मशीन पर ssh को निलंबित करना चाहता हूं। आम तौर पर आप उपयोग करते हैं Ctrl- Zनिलंबित करने के लिए, लेकिन यह ssh में काम नहीं करेगा क्योंकि इसे दूरस्थ शेल में भेजा जाएगा। इसके बजाय, आपको ssh एस्केप अनुक्रम का उपयोग करना चाहिए Enter~। तो ssh प्रेस को निलंबित करने के लिए Enter~ Ctrl- Z। अब आप अपने स्थानीय मशीन पर कमांड चला सकते हैं, और कर सकते हैं

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

फ़ाइल की प्रतिलिपि बनाने के लिए और फिर ठीक उसी स्थान पर वापस जाएं जहां आपने इसे छोड़ा था

user@localmachine:~$ fg


लेकिन समस्या रिमोट से कॉपी नहीं हो रही है, समस्या रिमोट पर कॉपी हो रही है, मैं यह नहीं देखता कि कैसे निलंबित शेल कुछ भी पता करने के लिए करता है ...
एलेक्स

वैसे यह दूसरे तरीके से भी काम करता है। विचार सिर्फ इतना है कि आप सत्र से बाहर निकलने के बजाय उसे निलंबित कर देते हैं, जिससे यह कम से कम थोड़ा आसान हो जाता है।
स्टीन स्कुट

0

यदि आप एक सरल समाधान चाहते हैं, तो बस ड्रॉपबॉक्स खाता खोलें, दूरस्थ मशीन पर जाएं और wget ( यहां से संशोधित संस्करण ) करें: wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

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