यह मॉड्यूल क्या करता है #
SSH आपके सर्वर में प्रवेश का रास्ता है: वह एन्क्रिप्टेड चैनल जिससे आप इसे प्रशासित करने के लिए जुड़ते हैं। यह सुनिश्चित करना कि वह दरवाज़ा ठीक से लगा है — सही कुंजियों के साथ और बिना किसी अतिरिक्त ताले के — यही एक सुरक्षित सर्वर को एक उजागर सर्वर से अलग करता है।
ssh मॉड्यूल उस रिमोट पहुँच के कार्यों को एक ही आदेश में एकत्र करता है: यह उपयोगकर्ता की अधिकृत कुंजियों का प्रबंधन करता है (जोड़ें, सूचीबद्ध करें, हटाएँ), उन host कुंजियों को नियंत्रित करता है जिनसे सर्वर क्लाइंट के सामने अपनी पहचान बताता है, सक्रिय सत्र दिखाता है, और आपकी कॉन्फ़िगरेशन में परिभाषित sshd हार्डनिंग की जाँच या पुनः लागू करता है। sshd को छूने वाला हर ऑपरेशन पहले कॉन्फ़िगरेशन को मान्य करता है (sshd -t) ताकि कोई गलत बदलाव आपको बाहर न कर सके।
कुंजियाँ बदलते समय या sshd को पुनरारंभ करते समय एक सत्र खुला रखें: इस तरह, यदि कुछ गलत होता है, तो आप अभी भी ठीक करने के लिए अंदर हैं। डिफ़ॉल्ट रूप से मॉड्यूल प्रबंधित उपयोगकर्ता ubuntu पर काम करता है; किसी अन्य पर काम करने के लिए --user का उपयोग करें।
सामान्य कार्य #
चुनें कि आप क्या करना चाहते हैं। हर रेसिपी में आदेश पहले से लिखा हुआ आता है — बस अपने उपयोगकर्ता या कुंजी को डालें और कॉपी करें दबाएँ।
1
SSH पहुँच स्थिति देखें
एक नज़र में जाँचें कि sshd सक्रिय है और ठीक से कॉन्फ़िगर है।
ubuntu उपयोगकर्ता के साथ SSH से अपने सर्वर पर कनेक्ट करें और चलाएँ:
$ sudo imaxe ssh statusकिसी स्क्रिप्ट के लिए चाहिए? --json जोड़ें और आपको वही जानकारी मशीन-पठनीय रूप में मिलेगी:
$ sudo imaxe ssh status --jsonsshd सक्रिय है या नहीं, यह किस पोर्ट पर सुनता है, और लागू हार्डनिंग का सारांश।2
कोई अधिकृत कुंजी जोड़ें या हटाएँ
किसी नई मशीन को पहुँच दें या किसी को रद्द करें जिसे आप अब उपयोग नहीं करते।
पहले, देखें कि प्रबंधित उपयोगकर्ता के लिए वर्तमान में कौन-सी कुंजियाँ अधिकृत हैं:
$ sudo imaxe ssh keys listएक सार्वजनिक कुंजी को आर्गुमेंट के रूप में पास करके जोड़ें (या इसे मानक इनपुट से पढ़ने के लिए - का उपयोग करें):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"अब ज़रूरी नहीं? इसे इसके fingerprint या इसकी टिप्पणी से हटाएँ:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys अद्यतन हो जाती है। परिणाम keys list से जाँचें।3
क्लोनिंग के बाद host कुंजियाँ पुनर्जनित करें
किसी AMI से मशीन बनाने के बाद आवश्यक।
जब आप किसी इमेज को क्लोन करते हैं, तो हर प्रति वही सर्वर पहचान विरासत में पाती है। इस मशीन के लिए नई, अनन्य host कुंजियाँ उत्पन्न करें:
$ sudo imaxe ssh hostkeys regenerate --yes4
हार्डनिंग की समीक्षा और पुनः लागू करें
जाँचें कि sshd अब भी वैसा ही कॉन्फ़िगर है जैसा होना चाहिए, और न हो तो ठीक करें।
वर्तमान हार्डनिंग की वांछित हार्डनिंग (जो आपकी कॉन्फ़िगरेशन परिभाषित करती है) से तुलना करें:
$ sudo imaxe ssh harden showकोई अंतर? YAML से हार्डनिंग पुनः लागू करें और sshd को सुरक्षित रूप से पुनः लोड करें:
$ sudo imaxe ssh harden reapplysshd आपके सत्र को गिराए बिना पुनः लोड होता है।5
सत्र देखें और sshd पुनरारंभ करें
देखें कौन जुड़ा है और खुद को बाहर करने के डर के बिना बदलाव लागू करें।
अभी सक्रिय SSH सत्रों को सूचीबद्ध करें:
$ sudo imaxe ssh sessionsकॉन्फ़िगरेशन बदलाव लागू करने के लिए, reload को प्राथमिकता दें (यह कनेक्शन नहीं गिराता); पूर्ण पुनरारंभ आवश्यक होने पर ही restart का उपयोग करें। दोनों पहले कॉन्फ़िगरेशन को मान्य करते हैं:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartsshd को पुनरारंभ करने या पोर्ट बदलने से पहले, एक दूसरा आपातकालीन सत्र खुला रखें। यदि, पुनर्कनेक्ट करते समय, आपको किसी hostkeys regenerate के बाद एक भिन्न host key चेतावनी मिलती है, तो यह अपेक्षित है: नई पहचान स्वीकार करें।
सारांश #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]sshd, अधिकृत कुंजियों या host कुंजियों को पढ़ने या संशोधित करने वाले ऑपरेशन के लिए root विशेषाधिकार आवश्यक हैं (sudo का उपयोग करें)। keys, hostkeys और harden समूह अपने-अपने नेस्टेड उपआदेश एकत्र करते हैं। स्क्रिप्टिंग के लिए उपयुक्त आउटपुट के लिए status, sessions, keys list या harden show में --json जोड़ें।
उपआदेश #
| उपआदेश | यह क्या करता है | प्रासंगिक फ़्लैग |
|---|---|---|
| status | sshd की स्थिति: सक्रिय, पोर्ट और हार्डनिंग सारांश। | --json |
| keys list | प्रबंधित उपयोगकर्ता की अधिकृत कुंजियाँ सूचीबद्ध करता है। | --user, --json |
| keys add | एक सार्वजनिक कुंजी जोड़ता है (आर्गुमेंट या stdin से)। | --user, --comment |
| keys remove | fingerprint या टिप्पणी से एक कुंजी हटाता है। | --user |
| hostkeys regenerate | host कुंजियाँ पुनर्जनित करता है (AMI क्लोन करने के बाद महत्वपूर्ण; fingerprint बदलता है)। | --yes |
| sessions | सक्रिय SSH सत्रों को सूचीबद्ध करता है। | --json |
| harden show | वर्तमान हार्डनिंग को वांछित के विरुद्ध दिखाता है। | --json |
| harden reapply | YAML से हार्डनिंग पुनः लागू करता है और sshd पुनः लोड करता है। | — |
| restart | sshd पुनरारंभ करता है, पहले कॉन्फ़िगरेशन मान्य करते हुए (sshd -t)। | — |
| reload | sshd पुनः लोड करता है, पहले कॉन्फ़िगरेशन मान्य करते हुए (sshd -t)। | — |
आर्गुमेंट और फ़्लैग #
| आर्गुमेंट / फ़्लैग | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
| <clave> आव. | string | — | keys add में: सार्वजनिक कुंजी, या इसे stdin से पढ़ने के लिए -। |
| <selector> आव. | string | — | keys remove में: हटाने के लिए कुंजी का fingerprint (SHA256:...) या टिप्पणी। |
| --user | string | ubuntu | वह उपयोगकर्ता जिसकी authorized_keys की क्वेरी या संशोधन किया जाता है (keys list/add/remove में)। |
| --comment | string | — | keys add में: कुंजी से जुड़ी टिप्पणी ताकि इसे बाद में पहचाना जा सके। |
| --yes | bool | false | hostkeys regenerate में: बिना पूछे पुष्टि करता है (क्लाइंट द्वारा देखा जाने वाला fingerprint बदलता है)। |
| --json | bool | false | status, sessions, keys list और harden show में: परिणाम को stdout पर JSON के रूप में निकालता है। |
फ़ाइलें और पथ #
| पथ | सामग्री |
|---|---|
| /etc/imaxe/ssh.yml | मॉड्यूल कॉन्फ़िगरेशन: पोर्ट, लॉगिन नीतियाँ (root, पासवर्ड, सार्वजनिक कुंजी), अनुमत उपयोगकर्ता, प्रबंधित उपयोगकर्ता और host कुंजी पुनर्जनन। |
| /home/<usuario>/.ssh/authorized_keys | प्रबंधित उपयोगकर्ता की अधिकृत सार्वजनिक कुंजियाँ जिन्हें keys add/remove संशोधित करते हैं। |
| /etc/ssh/sshd_config.d/ | sshd कॉन्फ़िगरेशन के खंड जहाँ हार्डनिंग लागू होती है। |
| /etc/ssh/ssh_host_*_key | host कुंजियाँ जो सर्वर की पहचान बताती हैं और जिन्हें hostkeys regenerate नवीनीकृत करता है। |
ssh.yml का उदाहरण:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueनिकास कोड और लॉग #
हर बार चलने पर एक कोड लौटाया जाता है जिसे आप echo $? से जाँच सकते हैं — स्क्रिप्ट में श्रृंखलाबद्ध करने के लिए उपयोगी:
sshd -t मान्यकरण विफल रहा; कुछ भी लागू नहीं किया गया।डिबग करते समय सेवा लॉग को लाइव देखें:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonसमस्या निवारण #
| लक्षण | संभावित कारण | समाधान |
|---|---|---|
| CONFIG (कोड 3) लौटाता है | हार्डनिंग या किसी मैनुअल बदलाव ने sshd को अमान्य कॉन्फ़िगरेशन के साथ छोड़ दिया। | imaxe ssh harden show से diff की समीक्षा करें और इसे ठीक करें; मान्यकरण किसी टूटी कॉन्फ़िग को लागू होने से रोकता है। |
| पुनर्कनेक्ट करते समय, एक भिन्न host key चेतावनी | host कुंजियाँ पुनर्जनित की गईं (AMI क्लोन करने के बाद अपेक्षित)। | यह सामान्य है: क्लाइंट पर नई पहचान स्वीकार करें और अपनी known_hosts अद्यतन करें। |
keys add NOTFOUND (कोड 4) लौटाता है | --user में दिया गया उपयोगकर्ता सिस्टम पर मौजूद नहीं है। | उपयोगकर्ता नाम जाँचें या डिफ़ॉल्ट प्रबंधित वाला (ubuntu) उपयोग करें। |
| मैं अब पासवर्ड से लॉग इन नहीं कर सकता | हार्डनिंग द्वारा password_authentication को "no" पर सेट किया गया है। | यह जानबूझकर है: सार्वजनिक कुंजी से लॉग इन करें और उन्हें imaxe ssh keys से प्रबंधित करें। |
SSH मॉड्यूल में अटक गए?
हमें «imaxe <module> status --json» का आउटपुट भेजें और हम आपको जल्दी जवाब देंगे।