ssh सुरंग कुंजी अनलॉक करने के लिए बाधित - एक एकल आदेश की तलाश में


1

मैं एक दूरस्थ सर्वर (ए) तक पहुंचने के लिए एक ssh सुरंग बनाने की कोशिश कर रहा हूं जिसे केवल दूसरे सर्वर (B) के माध्यम से एक्सेस किया जा सकता है। मेरे पास स्थानीय सर्वर (L) पर रिले सर्वर (B) और गंतव्य सर्वर (A) पर जाने के लिए रिले सर्वर (B) पर एक अन्य कुंजी है।

[स्थानीय मशीन (L) रिले सर्वर (B) की कुंजी के साथ] - & gt; [रिले सर्वर (बी) गंतव्य सर्वर की कुंजी के साथ (ए)] - & gt; [गंतव्य सर्वर (ए)]

मेरे पास एक ~ / .ssh / config फाइल है जो मेरी स्थानीय मशीन (L) पर इस तरह दिखती है:

Host relay.server(B)
    Hostname relay.server
    Port 22
    User me
    IdentityFile ~/.ssh/id_rsa

Host destination.server(A)
    Hostname destination.server
    Port 1122
    User me
    IdentityFile ~/.ssh/id_rsa

और मैं अपनी सुरंग को निम्नलिखित तरीके से काम में ला सकता हूं:

कमांड चलाना: ssh -N -L 1122:SERVER_PRIVATE_IP:22 relay.server(B) मेरी स्थानीय मशीन (L) पर। यह मुझे पहली कुंजी को अनलॉक करने के लिए एक पासवर्ड के लिए संकेत देता है और फिर हैंग करने के लिए प्रकट होता है यह एक प्रॉम्प्ट का उपयोग नहीं करता है, का उपयोग करते हुए -f विकल्प या एक के साथ समाप्त & मुझे पासवर्ड दर्ज करने से रोकता है। हालाँकि अगर मैं ^C पासवर्ड दर्ज करने के बाद यह कमांड और फिर एंटर करें ssh destination.server(A) मुझे गंतव्य कुंजी (A) से कनेक्ट होने के बाद दूसरी कुंजी को अनलॉक करने के लिए एक पासवर्ड प्रदान करने के लिए एक संकेत मिलता है।

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


स्पष्टीकरण देने के लिए धन्यवाद। मैं सुझाव देने जा रहा था -f; मुझे यह सुनकर दुख हुआ कि यह काम नहीं किया (आप कर रहे हैं ज़रूर आपने कोशिश की -f के बिना &;) मैं विचारों से बाहर हूँ; सौभाग्य।
Scott

जवाबों:


0

संक्षिप्त उत्तर आपको चाहिए

  • ProxyCommand का उपयोग करते हुए nc के माध्यम से कनेक्ट करने के लिए
  • ForwardAgent चाबियों के साथ पारित करने के लिए
  • सुनिश्चित करें कि आपकी सार्वजनिक कुंजी का हिस्सा है .ssh/authorized_keys सभी सर्वरों पर
Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ProxyCommand    ssh -q relay "nc %h %p"
    ForwardAgent    yes

लंबा भाग।

ProxyCommand ssh config में विकल्प जब भी संलग्न होता है तो एक कमांड चलाता है Host प्रयोग किया जाता है। यह आमतौर पर के साथ प्रयोग किया जाता है nc nmap.org से उपलब्ध है, जिसे भी जाना जाता है ncat और बहुत सारे विकल्प हैं।

ऊपरोक्त में Host destination ssh config का प्रवेश, ProxyCommand के लिए सेट किया गया था ssh -q relay "nc %h %p" जो कहता है, ssh चुपचाप रिले और चलाने के लिए nc destination.server.fqdn.or.IP 22

nc आने वाली ssh और गंतव्य के बीच संबंध बनाता है।

ForwardAgent yes ssh को ssh-agent की कुंजी जोड़ने के लिए कहता है। ssh एजेंट कुंजी का ट्रैक रखते हैं और स्वचालित रूप से आवश्यकतानुसार एक मेजबान को सही पास करने के लिए उपयोग किया जाता है। ForwardAgent yes एजेंट को रिले पर एक और एजेंट के साथ कुंजी को पास करने के लिए कहता है और फिर गंतव्य पर जाता है।

अब यह सब काम करने के लिए, प्रत्येक सर्वर जिसे आप के माध्यम से आशा करते हैं और अंततः गंतव्य के पास आपकी निजी कुंजी (id_rsa) से जुड़ी सार्वजनिक कुंजी होनी चाहिए .ssh/authorized_keys फ़ाइल। जब आपने अपनी निजी कुंजी, id_rsa, एक सार्वजनिक कुंजी, id_rsa.pub बनाई है, तो भी बनाई जानी चाहिए थी।

यदि आपके पास अपनी सार्वजनिक कुंजी नहीं है, तो आप इसे निजी कुंजी से हमेशा प्राप्त कर सकते हैं ssh-keygen -y -f ~/.ssh/id_rsa आसान कॉपी / पेस्ट के लिए। ध्यान दें कि सार्वजनिक कुंजी में 2 या 3 स्थान-अलग-अलग फ़ील्ड हैं, लेकिन है एक लाइन।

इसलिए, ssh relay, संपादित करें ~/.ssh/authorized_keys (जो मौजूद नहीं हो सकता है, इसलिए mkdir -p ~/.ssh आवश्यक हो सकता है) और सार्वजनिक कुंजी को एक नई पंक्ति (या यदि मौजूद नहीं है) पर चिपकाएँ।

रिले सर्वर पर रहते हुए, यह देखें nc / बिन या / usr / बिन में मौजूद है। यदि ऐसा नहीं होता है, तो आपको अपने पैकेज मैनेजर, याम या एप्ट-गेट का उपयोग करके इसे इंस्टॉल करना होगा।

रिले सर्वर से, ssh destination और उसी का अद्यतन करें ~/.ssh/authorized_keys

exit अपने स्थानीय मशीन के लिए सभी तरह से बाहर, और आप करने में सक्षम होना चाहिए ssh destination

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