स्नोबॉल के जवाब से बहुत मदद मिली। हालांकि, मैंने कमांड में कुछ संशोधन किए और यह बताना चाहता था कि यह कैसे काम करता है। इस स्थिति को देखते हुए:
ssh ssh
A -------> B -------> C
^ ^
using A's using B's
ssh key ssh key
अपनी ~/.ssh/config
फ़ाइल को संशोधित करें और उस होस्ट को जोड़ें B
जिसके माध्यम से आप कूदना चाहते हैं, बस आप सामान्य रूप से होस्ट को कैसे कॉन्फ़िगर करेंगे:
Host B
User myusername
HostName b.mycompany.com
फिर आप उस होस्ट को जोड़ते हैं C
जिसे आप समाप्त करना चाहते हैं:
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 && nc %h %p'
ध्यान दें ProxyCommand
, जहां:
ssh -T -q
इंगित करता है कि इसे एक छद्म-टीटीवाई ( -T
) आवंटित नहीं करना चाहिए और शांत होना चाहिए ( -q
);
- एक बार छलांग मेजबान पर
B
, हम SSH कुंजी के A
माध्यम से कुंजी जोड़ते हैं ssh-add
;
- जो केवल इसलिए काम करता है क्योंकि हमने SSH एजेंट का उपयोग करके अग्रेषित किया है
-o 'ForwardAgent yes'
।
ssh-add -t 1
इंगित करता है कि मैं चाहता हूं कि अंतिम मेजबान सी को प्रमाणित करने के लिए केवल 1 सेकंड के लिए कुंजी जोड़ा जाना चाहिए;
- और अंत में, पोर्ट पर अंतिम मेजबान के लिए
nc %h %p
एक netcat
कनेक्शन शुरू करता है (दोनों जो फ़ाइल में जानकारी के आधार पर एसएसएच द्वारा भरा जाएगा )।%h
%p
~/.ssh/config
यदि आपको उपयोग करने के लिए एक कस्टम कुंजी निर्दिष्ट करने की आवश्यकता है B
, तो आप उस ssh-add
हिस्से को संशोधित करके कर सकते हैं :
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 ~/.ssh/mykey && nc %h %p'