स्नोबॉल के जवाब से बहुत मदद मिली। हालांकि, मैंने कमांड में कुछ संशोधन किए और यह बताना चाहता था कि यह कैसे काम करता है। इस स्थिति को देखते हुए:
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'