कई मेजबानों के माध्यम से ssh


37

मेरे कार्यालय में अपनी मशीन प्राप्त करने के लिए, इस समय मैं यह कर रहा हूँ:

me@home:~$ ssh unix.university.com
me@unix:~$ ssh unix.department.univeristy.com
me@unix.department:~$ ssh office-machine.department.university.com
me@office-machine:~$ echo "This is very annoying"

क्या इस प्रक्रिया को स्वचालित करने का एक आसान तरीका है, शायद एक ही कमांड जिसे मैं अपने अंत में उपयोग कर सकता हूं?


जवाबों:


31

आप ssh क्लाइंट का उपयोग लॉगिन पर रिमोट मशीन पर ssh निष्पादित करने के लिए कर सकते हैं।

ssh -t unix.university.com \
    ssh -t unix.department.univeristy.com \
    ssh -t office-machine.department.university.com

( -tइनवॉइस में शामिल होने का कारण यह है क्योंकि ssh मुझे त्रुटियों को फिर से दे रहा था: जब मैं अपनी मशीन पर कोशिश कर रहा था तो स्टडिन टर्मिनल नहीं था; आपकी मशीन अलग हो सकती है।)

जब आप अंतिम शेल से बाहर निकलते हैं, तो यह प्रक्रिया चेन-एग्जिट होगी, जिससे आप Ctrl-Dबार-बार टाइप कर पाएंगे ।


कृपया ध्यान दें: केवल "-t" जोड़ें यदि आप बस रिमोट मशीन पर लॉगिन करते हैं। रिमोट मशीन पर एक कमांड शुरू करने के लिए, उन्हें नहीं डालें क्योंकि वे कुछ चीजों को कर सकते हैं / भ्रष्ट कर देंगे (उदाहरण के लिए: tar cf - something | ssh somewhere "cd /path/remote ; tar xf - " यदि आप जोड़ते हैं तो भ्रष्ट हो सकते हैं -t! अद्भुत StephaneChazelas के उत्तर के लिए देखें unix.stackexchange -questions/151916/ … )
ओलिवियर दुलक

3
उपयोग करना -J इस उत्तर की तुलना में अधिक सुरक्षित है, क्योंकि आपके पास तब आपके स्थानीय कंप्यूटर पर सभी ssh कुंजियों को संग्रहीत करने की संभावना है। जे-विकल्प ओपनशीट संस्करण 7.3 में पेश किया गया था जैसा कि
एरिक सोजलंड

1
@ ErikSjölund Openssh एक से अधिक -Jविकल्प की अनुमति नहीं देता है। मुझे लगता है कि आप इसे ProxyCommandअपने कॉन्फ़िगरेशन में कई विकल्पों के साथ कर सकते हैं ।
amphetamachine

1
@amphetamachine -Jआप के माध्यम से जाने के लिए हॉप्स की अल्पविराम से अलग सूची निर्दिष्ट कर सकते हैं। लेकिन इस उत्तर के ProxyCommandसाथ उपयोग करना -Wअभी भी एक बेहतर तरीका है यदि आप एक ऐसे संस्करण का उपयोग करते हैं जो समर्थन के लिए बहुत पुराना है -J
कैस्परल्ड

35

हां, ssh ProxyCommand और netcat का उपयोग करने का एक शानदार तरीका है

अपने .ssh / config में ऐसा कुछ डालें

Host *.department.university.com
User me
ForwardAgent yes
ProxyCommand ssh unix.university.com nc %h %p

यह सीधे किसी भी .department.university.com सर्वर पर जाकर जंप / बैस्टियन होस्ट unix.university.com का उपयोग करेगा। आपको सीधे unix.university.com के लिए एक श्लोक की भी आवश्यकता हो सकती है।

यहां बताया गया है कि यह कैसे काम करता है: http://backdrift.org/transparent-proxy-with-ssh

इस तकनीक के साथ, अब आप बस लिख सकते हैं

ssh unix.department.university.com

और यह सब प्रत्यक्ष दिखाई देगा। Rsync, scp, आदि जैसे उपकरण (ssh स्टैक में कुछ भी) पारदर्शी रूप से काम करेंगे।


2
+1 मैं एक स्टेजिंग सर्वर के माध्यम से टेस्ट नेटवर्क से डेटा को एक ठेस नेटवर्क तक पहुंचाने के लिए इसी तरह के कुछ का उपयोग करता हूं।
Arcege

2
हाँ, यह बहुत अच्छा काम करता है!
गाबे

15
सिर्फ ssh के रिकॉर्ड के नए संस्करणों के -Wविकल्प का समर्थन करने के लिए, आप ProxyCommand ssh -W %h:%p gatewaync पर निर्भर होने के बजाय कुछ ऐसा कर सकते हैं
Ulrich Dangel

जानकार अच्छा लगा! Thx
आरोन ब्राउन

2
महान काम करता है अगर उपयोगकर्ता का नाम मशीनों में समान है; अगर यह अलग है तो आपको कुछ करना होगाProxyCommand ssh -W %h:%p user@gateway
Riccardo Cossu

9

OpenSSH 7.3 में, ssh ने -Jकमांड लाइन ध्वज और संगत ProxyJumpविन्यास विकल्प को इस समस्या को हल करने के लिए जोड़ा ।

मेजबानों को आप अल्पविराम द्वारा अलग की गई सूची के रूप में ssh देना चाहते हैं -J। उदाहरण के लिए:

ssh -J unix.university.com,unix.department.university.com  \
  office-machine.department.university.com

-5

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

हालांकि यह कैसे कॉन्फ़िगर करने के लिए देखना होगा।

:)


आप नहीं चाहते (और शायद आप ऐसा नहीं कर सकते) एक बंदरगाह या आपके विश्वविद्यालय के एसएसटी गेटवे को खोल दें ...
स्टीफन जिमेनेज़

9
यदि आप नहीं जानते कि यह कैसे करना है, और इसे देखने के लिए परेशान नहीं किया जा सकता है, तो आपने यह उत्तर क्यों दिया है?
एम्फेटामैचिन

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