NAT सर्वर के माध्यम से VPC निजी सबनेट में ec2 उदाहरण के लिए SSH कैसे करें


16

मैंने सार्वजनिक सबनेट और निजी सबनेट के साथ एक वीपीसी को बनाया है। निजी सबनेट की बाहरी नेटवर्क तक सीधी पहुंच नहीं है। तो, सार्वजनिक सबनेट में एक NAT सर्वर है जो निजी सबनेट से बाहरी नेटवर्क तक सभी आउटबाउंड यातायात को आगे बढ़ाता है।

वर्तमान में, मैं सार्वजनिक सबनेट से निजी सबनेट तक एसएसएच, नेट से एसएसएच भी निजी सबनेट कर सकता हूं। हालाँकि, मैं चाहता हूं कि किसी भी मशीन (होम लैपटॉप, ऑफिस मशीन और मोबाइल) से SSH निजी सबनेट में उदाहरण के लिए हो।

मैंने कुछ शोध किए हैं कि मैं निजी सबनेट में एसएसएच को आगे बढ़ाने के लिए एनएटी बॉक्स को सेटअप कर सकता हूं। लेकिन मुझे इसके लिए किस्मत नहीं मिली।

किसी को भी मैं यह संभव बनाने के लिए सेटअप करने के लिए क्या सूचीबद्ध कर सकते हैं।

नामकरण हैं:

लैपटॉप (VPC के बाहर कोई भी उपकरण)

नेट (सार्वजनिक सबनेट में NAT सर्वर)

गंतव्य (सर्वर निजी सबनेट में जिसे मैं कनेक्ट करना चाहता हूं)

निश्चित नहीं कि निम्नलिखित सीमाएँ हैं या नहीं:

"गंतव्य" में एक सार्वजनिक आईपी नहीं है, केवल एक सबनेट आईपी, उदाहरण के लिए 10.0.0.1 "गंतव्य" नट की जनता के माध्यम से "नेट" से कनेक्ट नहीं हो सकता है। कई "गंतव्य" सर्वर हैं, क्या मुझे प्रत्येक के लिए एक सेटअप करने की आवश्यकता है?

धन्यवाद


यह लिंक SSH एजेंट अग्रेषण के माध्यम से निजी सबनेट में EC2 उदाहरणों से जुड़ने के लिए आवश्यक कदमों की रूपरेखा तैयार करता है।
शैलेंद्र रावत

जवाबों:


25

आप अपने VPC में किसी भी उदाहरण से जुड़ने के लिए एक गढ़ होस्ट स्थापित कर सकते हैं:

http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

आप एक नया उदाहरण लॉन्च करने का विकल्प चुन सकते हैं जो एक गढ़ होस्ट के रूप में कार्य करेगा, या एक गढ़ के रूप में अपने मौजूदा NAT उदाहरण का उपयोग करेगा।

यदि आप एक नया उदाहरण बनाते हैं, एक सिंहावलोकन के रूप में, आप:

1) अपने गढ़ होस्ट के लिए एक सुरक्षा समूह बनाएं जो एसएसएच को आपके लैपटॉप से ​​एक्सेस करने की अनुमति देगा (चरण 4 के लिए इस सुरक्षा समूह पर ध्यान दें)

2) अपने VPC में एक सार्वजनिक सबनेट में एक अलग उदाहरण (गढ़) लॉन्च करें

3) उस गढ़ को सार्वजनिक IP होस्ट करें या तो लॉन्च करें या एक इलास्टिक आईपी असाइन करके

4) अपने प्रत्येक उदाहरण के सुरक्षा समूहों को अपडेट करें, जिनके पास गढ़ होस्ट से SSH की अनुमति देने के लिए सार्वजनिक आईपी नहीं है। यह गढ़ होस्ट के सुरक्षा समूह आईडी (sg - #####) का उपयोग करके किया जा सकता है।

5) एसएसएच एजेंट का उपयोग करते हुए (ssh -A उपयोगकर्ता @ publicIPofBastion) को पहले गढ़ से जोड़ने के लिए, और फिर एक बार गढ़ में, SSH को किसी भी आंतरिक उदाहरण (ssh उपयोगकर्ता @ प्राइवेट-आईपी-ऑफ-इंटरनल-इंस्टेंस) में। एजेंट अग्रेषण आपकी निजी कुंजी को अग्रेषित करने का ध्यान रखता है, इसलिए इसे गढ़ के उदाहरण पर संग्रहीत नहीं किया जाना चाहिए ( कभी भी अपने उदाहरण पर निजी स्टोर न करें ) !!

उपरोक्त AWS ब्लॉग पोस्ट प्रक्रिया के संबंध में कुछ नटखट किरकिरा प्रदान करने में सक्षम होना चाहिए। मैंने उस मामले में भी नीचे शामिल किया है जब आप गढ़ मेजबानों के बारे में अतिरिक्त विवरण चाहते थे:

बैशन होस्ट की अवधारणा: http://en.m.wikipedia.org/wiki/Bastion_host

यदि आपको स्पष्टीकरण की आवश्यकता है, तो टिप्पणी करने के लिए स्वतंत्र महसूस करें।


3
एसएसएच / 22 को इनबाउंड और आउटबाउंड पर गढ़ में अनुमति देना सुनिश्चित करें।
user464180

यह इतना महत्वपूर्ण बिंदु है कि यह उत्तर का एक हिस्सा होना चाहिए!
तारिक

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

1

एकमात्र तरीका मैं इसे काम कर सकता था।

1) सुनिश्चित करें कि इस निजी उदाहरण के लिए सुरक्षा समूह में इनबाउंड नियम सार्वजनिक सबनेट से सुरक्षा समूह है

पोर्ट्स प्रोटोकॉल स्रोत
सभी sg-0b6616e070b9ea2d (सार्वजनिक सुरक्षा समूह)

2) प्रॉक्सी कमांड्स का उपयोग करके, अपनी ssh कॉन्फिग फाइल को कॉन्फ़िगर करें, ऐसा कुछ करने के लिए

vim ~/.ssh/config

Host publichost
   HostName 24.123.34.45
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand none
Host privatehost
   HostName 10.0.2.133
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand ssh publichost -W %h:%p

भागो ssh privatehost इसे काम करना चाहिए


0

बस स्पष्ट करने के लिए: एक बार जब आप अपने गढ़ होस्ट में ssh'd हैं, तो आपको NAT होस्ट में उपयोगकर्ता के रूप में ssh करने की आवश्यकता है ec2-user। इसने मुझे थोड़ा ऊपर कर दिया, क्योंकि आमतौर पर ubuntu उपयोगकर्ता AWS पर ubuntu है। तो मैंने किया:

laptop> ssh -A ubuntu@ssh_bastion
ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip

इसके अलावा, याद रखें कि आपके ssh_bastion में एक आउटबाउंड नियम होना चाहिए जो अन्य मेजबानों और sg के ट्रैफ़िक को बाहर करने की अनुमति देता है।


अमेज़ॅन एएमआई को विशेष रूप से एनएटी सेवा के लिए पहले से ही कॉन्फ़िगर करने के परिणामस्वरूप क्या वह 'इक्_सुसर' नाम है? तो, 'ec2-user' को निजी मशीन पर एक खाता कैसे मिला?
डेनिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.