सर्वर रिबूट के बिना फ़ाइल sshd_config फ़ाइल में परिवर्तन करें


33

मैंने फ़ाइल में कॉन्फ़िगरेशन बदल दिया है

/etc/ssh/sshd_config

लेकिन रिबूट सर्वर के बाद ही प्रभावी हुआ। रिबूट सर्वर के बिना परिवर्तन कैसे करें?


आप sudo service ssh restartप्रभावी होने के लिए सेवा को पुनरारंभ करने के लिए उपयोग कर सकते हैं । लेकिन याद रखें कि यदि आप SSH के माध्यम से जुड़े हुए हैं, तो आपका सत्र समाप्त हो जाएगा।
अज़करम

जवाबों:


39

बस sshd सेवा को पुनरारंभ करें:

sudo service sshd restart

या:

sudo /etc/init.d/sshd restart

6
अगर मैं ssh कनेक्शन पर हूं तो क्या होगा?
अनवर

7
कुछ भी नहीं ... शेख़ी sshd काफी स्मार्ट है जो मौजूदा ssh कनेक्शनों को आसानी से जारी रखने की अनुमति देता है
स्कॉट स्टेंसलैंड

4
मैं सीधे /etc/init.d में कुछ भी चलाने की अनुशंसा नहीं करता। "सेवा" कमांड का उपयोग करें। अधिकांश सेवाएं परवाह नहीं करेंगी, लेकिन कुछ ऐसे हैं जो पर्यावरण चर द्वारा प्रभावित होते हैं। "सेवा" सुनिश्चित करता है कि पर्यावरण को साफ किया जाए। उदाहरण के लिए, "सुडो" को चलाने से होम एनवायरनमेंट वेरिएबल आपके नॉन-रूट होम डायरेक्टरी में चला जाता है।
क्रिस कॉगडन

5
sudo service ssh restart

नहीं करेंगे। आपको sshd को पुनः आरंभ करने की आवश्यकता है, ssh की नहीं:

sudo service sshd restart

3
सिस्टम कॉन्फ़िगरेशन पर निर्भर करता है। लुबंटू में 14.04 sudo service ssh restartबहुत अच्छा काम करता है, जबकि sudo service sshd restart"sshd: अपरिचित सेवा" रिपोर्ट करता है । यह निश्चित नहीं है कि यह अलग-अलग क्यों है ...
schulwitz

3

एसएसएच सेवा को फिर से शुरू किए बिना, ऐसा करने के लिए एक कम घुसपैठ तरीका है।

से man sshd:

sshd अपनी कॉन्फ़िगरेशन फ़ाइल को तब रेयर करता है, जब वह हैंगअप सिग्नल प्राप्त करता है, S नाईटअप, नाम और विकल्पों के साथ खुद को निष्पादित करके, जैसे / usr / sbin / sshd।

तो आप SSH सर्वर प्रक्रिया में SIGHUP भेजने के लिए निम्न की तरह एक कमांड का उपयोग कर सकते हैं:

sudo kill -SIGHUP $(pgrep -f "sshd -D")

pgrep -f "sshd -D"भाग sshd डेमॉन प्रक्रिया का केवल पीआईडी वापस आ जाएगी कि नए कनेक्शन के लिए सुनता है, वहाँ की संभावना है, क्योंकि प्रत्येक सक्रिय सत्र कि संकेत की जरूरत नहीं है के लिए अन्य PIDs किया जाना है।


2
यह कॉन्फ़िगरेशन को फिर से लोड करने का सबसे सुरक्षित ( stribika.github.io/2015/01/04/secure-secure-shell.html ) तरीका है: "SSH को दूरस्थ होस्ट पर कॉन्फ़िगर करते समय अत्यधिक सावधान रहें। हमेशा एक सक्रिय सत्र रखें। sshd को पुनरारंभ करें। इसके बजाय आप अपने सत्र को मारे बिना कॉन्फ़िगरेशन को फिर से लोड करने के लिए SITEUP सिग्नल भेज सकते हैं। आप एक अलग बंदरगाह पर एक नया sshd उदाहरण शुरू करके और परीक्षण करके और भी अधिक सावधान हो सकते हैं। "
एड्रियानो लुकास

क्या कोई सार्थक अंतर है sudo pkill -HUP sshd?
एडम कालिसज़

@ एडम आप केवल सुनने की प्रक्रिया को एचयूपी करना चाहते हैं, न कि सक्रिय ग्राहक जो sshdप्रक्रियाएं भी हैं। sudo pkill -HUP -f "sshd -D"एक आकर्षक विकल्प है, लेकिन फिर pkill अपने स्वयं के sudoमाता-पिता को संकेत देता है क्योंकि इसकी पूर्ण कमांड लाइन अपने स्वयं के खोज पैटर्न से मेल खाती है। आप एक ऐसे पैटर्न के साथ आ सकते हैं जो अपने आप से मेल नहीं खाता है ... -f "sshd -[D], लेकिन यह चीजों को थोड़ा बाधित करता है। मुझे लगता है कि pgrep विधि शिक्षार्थियों के लिए अपने सिर को चारों ओर लपेटने के लिए आसान है।
स्टीवन के


2

Systemd सिस्टम के लिए - Ubuntu डिफ़ॉल्ट

sudo systemctl reload sshd.service

या

 sudo systemctl reload sshd

या

 sudo /bin/systemctl reload sshd.service

Sysvinit सिस्टम के लिए

sudo service sshd reload

या

sudo /etc/init.d/sshd reload

0

पुनः आरंभ करने के लिए रीलोड एक बेहतर विकल्प हो सकता है

sudo service sshd reload

हुड के तहत यह HUPsshd डेमॉन प्रक्रिया को संकेत भेजता है लगभग उसी तरह से स्टीवन के ने पहले ही उत्तर दिया था । अंतर यह है कि यह संस्करण सिग्नल को सीधे और अधिक सटीक तरीके से भेजने के लिए killprocफ़ंक्शन के बजाय फ़ंक्शन का उपयोग करता है kill(गलत प्रक्रियाओं को सिग्नल भेजने की संभावित त्रुटियों को कम करने के लिए)। सेवा को पुनरारंभ / बंद किए बिना कॉन्फ़िगरेशन फिर से चालू है।

बेशक यह पता लगाने के लायक है कि वास्तव में एसएसएच बहरे को कैसे बुलाया जाता है, जैसा कि दूसरों ने चर्चा की है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.