एक एकल कमांड में एक मध्यवर्ती मशीन के माध्यम से एक ssh कनेक्शन सुरंग


10

क्या कोई तरीका है, एक एकल कमांड में, मेरे कंप्यूटर A से ssh कनेक्शन स्थापित करने के लिए, कंप्यूटर B के माध्यम से, कंप्यूटर C के लिए, जैसे कि मुझे कंप्यूटर C पर शेल तक पहुँच प्राप्त है?

एक शिकन (जो केवल -L विकल्प का उपयोग करके ssh कनेक्शन को अग्रेषित करने से इनकार करती है) यह है कि मेरे पास कंप्यूटर B पर खाते का पासवर्ड है, और कंप्यूटर B पर खाता कंप्यूटर C पर खाते से कनेक्ट करने के लिए अधिकृत है, लेकिन मेरे पास कंप्यूटर C पर खाते का पासवर्ड नहीं है।


जवाबों:


8

मैं समझ गया था कि आप बस कंप्यूटर C में लॉग इन करना चाहते हैं, वास्तव में A से C. के लिए कुछ भी सुरंग नहीं है, इसलिए इस चाल को करना चाहिए:

ssh -t computer-b "ssh computer-c"

आपको दो बार पासवर्ड दर्ज करना पड़ सकता है, पहले कंप्यूटर B के लिए और फिर कंप्यूटर C के लिए। लेकिन ssh के की-पेयर ऑथेंटिकेशन का उपयोग करके इससे बचा जा सकता है।


1
धन्यवाद - यह काम करता है! अगर मैं इतना बोल्ड हो सकता हूं कि एक फॉलोवर से पूछूं। किसी भी विचार मैं एक कमांड में A से C तक फ़ाइल कैसे स्कैन कर सकता हूं?
पवित्रता

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

ऐसा आप तीन बार भी कर सकते हैं! ssh -t computer-b "ssh -t computer-c 'ssh computer-d'": D
gak

0

आप शायद SSH के ProxyCommand का उपयोग करना चाहते हैं: http://benno.id.au/blog/2006/06/08/ssh_proxy_command


मुझे यह काम करने का तरीका नहीं मिल रहा है क्योंकि मेरे पास कंप्यूटर C के लिए पासवर्ड नहीं है, और इस दृष्टिकोण की आवश्यकता है। सुझावों के लिए खोलें हालांकि यह दृष्टिकोण अधिक सुरुचिपूर्ण लगता है।
पवित्रता

0

यदि आप ssh कुंजियों का उपयोग कर रहे हैं, तो आप मशीन B के लिए एक नई कुंजी उत्पन्न कर सकते हैं और A से B. तक मशीन B से कनेक्शन के लिए उपयोग कर सकते हैं, आप जोड़ सकते हैं

command="ssh C" ssh-....

में ~/.ssh/authorized_keysफ़ाइल। इसका मतलब है कि जब भी आप उस ssh कुंजी के साथ B से जुड़ेंगे, तो यह ssh Cकमांड निष्पादित करेगा ।

मुझे नहीं पता कि यह scp के साथ काम करता है।


0

उपयोग ProxyCommand

देखते हैं man ssh_config। मैं उपयोग करने की सलाह देता हूं ProxyCommand। चलो अपने मूल परिदृश्य लेते हैं:

  • कंप्यूटर A (आपका कंप्यूटर)
  • कंप्यूटर बी (एक प्रॉक्सी होस्टनाम)
  • कंप्यूटर सी (केवल कंप्यूटर बी से एसएसएच के माध्यम से उपलब्ध)

~/.ssh/configनिम्नलिखित सामग्री के साथ संपादित करें ।

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

अब आप पारदर्शी रूप से Computer C. उदा तक पहुँच सकेंगे

ssh computerc

इस विधि के लाभ

ज्यादा सुरक्षित

आपको केवल कंप्यूटर ए (आपके कंप्यूटर) पर होने के लिए आपकी निजी कुंजी की आवश्यकता है। ncआदेश एक प्रॉक्सी जिसमें SSH के माध्यम से यातायात एन्क्रिप्ट करेगा रूप में कार्य करेगा। इसमें प्रमाणीकरण शामिल है। अपनी निजी कुंजी को कई सर्वरों में वितरित करना एक बहुत बुरा विचार है (जैसा कि आपकी निजी कुंजी के साथ कोई भी समझौता सर्वर अंततः आपकी निजी कुंजी से समझौता करता है)।

कई स्थलों से मेल खाता है

एक का उपयोग कर कई गंतव्य कंप्यूटरों का मिलान किया जा सकता है Host192.168.35.0/24कंप्यूटर बी के माध्यम से प्रॉक्सी करने के लिए एक विशिष्ट नेटवर्क (उदाहरण के लिए उपरोक्त उदाहरण में) के भीतर एक एकल कंप्यूटर या कोई कंप्यूटर । यह एक उपनाम के रूप में भी कार्य करता है।

ssh 192.168.35.27

उपरोक्त उदाहरण में, यह कंप्यूटर बी के माध्यम से आईपी पते पर जाने के लिए प्रॉक्सी करेगा।

डेज़ी श्रृंखला परदे के पीछे

इस विधि का उपयोग करके आप आवश्यक के रूप में कई स्वचालित परदे के पीछे श्रृंखला डेज़ी कर सकते हैं। उदाहरण के लिए, आप एक कंप्यूटर डी जोड़ सकते हैं जो केवल कंप्यूटर सी से उपलब्ध है और यह पारदर्शी रूप से काम करेगा।

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerdउपरोक्त ssh_configउदाहरणों में कंप्यूटर सी और कंप्यूटर बी के माध्यम से स्वचालित रूप से प्रॉक्सी करेगा ।


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