सबसे पहले, गेटवे पर अपनी ssh कुंजियों को कॉन्फ़िगर करें ताकि आप प्राइवेट में ssh कर सकें। फिर अपने क्लाइंट पर, एक अलग निजी / सार्वजनिक कुंजी जोड़ी बनाएं जिसे आप गेटवे पर प्रमाणित करने के लिए उपयोग करते हैं। जैसे ssh-keygen -t rsa -f id_gateway।
फिर गेटवे पर, command=अपने अधिकृत_की फ़ाइल में सिंटैक्स का उपयोग करें । उदाहरण के लिए, आपकी प्रविष्टि इस तरह दिख सकती है:
command="sh -c 'ssh private ${SSH_ORIGINAL_COMMAND:-}'" ssh-rsa AAAAB3....
command="command"अधिक जानकारी के लिए sshd मैनपेज खोजें । इस पंक्ति में id_gateway.pub कुंजी जोड़ना सुनिश्चित करें। फिर .ssh/configअपने क्लाइंट में, इस तरह एक प्रविष्टि जोड़ें:
Host private
User gateway-user
Hostname xxx.xxx.xxx.xxx
IdentitiesOnly Yes
IdentityFile ~/.ssh/id_gateway
अब, अपने ग्राहक से आप में सक्षम होना चाहिए ssh privateऔर सीधे मिलता है। यह भी के लिए काम करता है scpऔर sftp।
अतिरिक्त श्रेय
यदि आप इसे कई सर्वरों के लिए उपयोग करना चाहते हैं, लेकिन केवल एक सार्वजनिक कुंजी को गेटवे पर प्रबंधित करना चाहते हैं, तो आप निम्न चाल का उपयोग कर सकते हैं। sshdडिफ़ॉल्ट रूप से केवल कुछ चर स्थानीय वातावरण से प्राप्त करने की अनुमति देता है। इनमें से एक है LC_PAPERजो शायद ही किसी भी चीज के लिए उपयोग किया जाता है। इसलिए हम सर्वर के होस्टनाम को पास करने के लिए इसका उपयोग कर सकते हैं:
सबसे पहले, सार्वजनिक कुंजी प्रविष्टि को इसमें बदलें
command="sh -c 'ssh $LC_PAPER ${SSH_ORIGINAL_COMMAND:-}'" ssh-rsa AAAAB3...
फिर अपने क्लाइंट पर, अपनी .bashrcफ़ाइल में एक फ़ंक्शन जोड़ें (या जो भी शेल आप उपयोग करते हैं) जो इस तरह दिखता है:
ssh_proxy() {
LC_PAPER=$1 /usr/bin/ssh $*
}
यदि आप चाहते हैं तो एक उपनाम बनाएं:
alias ssh=ssh_proxy
अंत में, ऊपर दिखाए गए Hostहिस्से की .ssh/configतरह अपने अनुभाग जोड़ें । उदाहरण के लिए:
Host private2
User gateway-user
Hostname xxx.xxx.xxx.xxx
IdentitiesOnly Yes
IdentityFile ~/.ssh/id_gateway
अब तुम क्या करने में सक्षम होना चाहिए ssh privateऔर ssh private2प्रवेश द्वार पर सिर्फ एक सार्वजनिक कुंजी के साथ।