रिबूट पर डिफ़ॉल्ट पोर्ट पर SSH रीसेट करता है


12

मैंने अपने होम सर्वर पर ( /etc/ssh/sshd_configफ़ाइल में) 54747 को पोर्ट करने के लिए अपना डिफ़ॉल्ट SSH पोर्ट बदल दिया , फिर से sshऔर sshdसेवाओं को फिर से शुरू किया (यह निश्चित नहीं है कि मैंने ऐसा कौन सा किया है कि दोनों सुरक्षित रहें)। अपने कॉन्फ़िगरेशन का परीक्षण करने के लिए, मैंने लॉग आउट किया और फिर बिना किसी समस्या के वापस आ गया।

कुछ दिनों बाद, मैंने एप अपडेट्स इंस्टॉल किए, और फिर अपने सर्वर को रिबूट किया। जब मैंने SSH में वापस (पोर्ट 54747 पर) कोशिश की, तो मुझे एक कनेक्शन मिला जिसमें त्रुटि होने से इनकार कर दिया गया।

किसी कारण से, मैंने डिफ़ॉल्ट पोर्ट पर SSH की कोशिश की, और यह काम कर गया! मैं sshd_config पर जांच करने के लिए वापस गया, लेकिन इसमें अभी भी कस्टम पोर्ट था। इसलिए मैंने sshऔर sshdसेवाओं को फिर से शुरू किया , और यह "नियमित" व्यवहार (बंदरगाह 54747 पर ssh) को वापस मिल गया। मैंने फिर से रिबूट करने की कोशिश की, और कनेक्शन ने फिर से मना कर दिया ...

किसी को भी पता है कि मैंने क्या गलत किया?

अतिरिक्त विवरण:

  • उबंटू 16.04.2 LTS
  • सर्वर का उपयोग एचटीपीसी भी किया जाता है, मेरे टीवी पर एक खुले सत्र (एसएसएच के समान उपयोगकर्ता) के साथ
  • मैं अपने लैपटॉप की आरएसए कुंजी का उपयोग कर एसएसएच करता हूं, और पासवर्ड पासवर्ड को अक्षम किया है
  • मैं साथ रिबूट करता था sudo reboot -h now, लेकिन खोज करने के बाद, मुझे पता चला कि यह कुछ लोगों द्वारा हतोत्साहित किया गया था, इसलिए मैंने कोशिश की sudo reboot, लेकिन कोई मतभेद नहीं हुआ

घटनाओं की संपादित अनुक्रम:

  1. 22H से 54747 में SSH पोर्ट बदलें /etc/ssh/sshd_config
  2. Ssh और sshd सेवाओं को पुनरारंभ करें
  3. वर्तमान SSH सत्र समाप्त करें
  4. पोर्ट 54747 पर सफलतापूर्वक एसएसएच वापस
  5. रीबूट
  6. पोर्ट 54747 पर SSH कनेक्शन त्रुटि, लेकिन पोर्ट 22 पर सफल
  7. Ssh और sshd सेवाओं को पुनरारंभ करें
  8. पोर्ट 54747 पर सफलतापूर्वक एसएसएच वापस, पोर्ट 22 पर कनेक्शन त्रुटि
  9. रिबूट करें और 6 पर वापस जाएं

EDIT 1: netstat आउटपुट

rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6       0      0 :::22                   :::*                    LISTEN      1/init  

संपादित करें 2: service sshd status

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

संपादित करें 3: lsof -i | grep ssh

systemd      1     root   46u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd      1     root   49u  IPv6  14641      0t0  TCP *:ssh (LISTEN)
sshd      4088     root    3u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd      4088     root    4u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd      4202      rgo    3u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd      4202      rgo    4u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)

संदर्भ के लिए, ATLAS रिमोट सर्वर होस्टनाम है, 192.168.1.27 मेरे लैपटॉप का LAN IP है, और चरण 6 और 7 के बीच कमांड निष्पादित किया गया था

ufw status

Status: inactive

संपादित करें 4: ps -ef |grep sshd

root      4088     1  0 22:40 ?        00:00:00 sshd: rgo [priv]
rgo       4202  4088  0 22:40 ?        00:00:00 sshd: rgo@pts/1 sshd

मैं आपको किसी भी तरह से निराश नहीं कर रहा हूं। लेकिन यह मेरे लिए लग रहा है जैसे आप अनुरोध के रूप में ssh सर्वर पर कमांड दर्ज नहीं कर रहे हैं। आप ssh कनेक्शन नहीं रह सकते हैं जब ssh डेमॉन मर चुका होता है ....... ssh सर्वर पर, ps -ef | grep sshd / usr / sbin / sshd -D प्रक्रिया को वापस करना चाहिए। कई लोग मदद कर रहे हैं लेकिन आपको सभी अलग-अलग दिशाओं में भेज रहे हैं। यदि आप आपके लिए सहायक होंगे तो मुझे IM पर चैट करने में खुशी होगी।
jones0610

शायद यह इसलिए है क्योंकि मेरे पास पहले से ही एक सत्र है जिसमें एक ही उपयोगकर्ता खोला और मेरे टीवी पर कोडी के साथ प्रदर्शित किया गया है?
3

नमस्ते, @ 3rgo, क्या आप इसे हल करने में कामयाब रहे?
पा --० 17०

नमस्ते ! नहीं, मैं अभी भी इस मुद्दे का सामना कर रहा हूं ... सौभाग्य से, मुझे अपने होम सर्वर को हर बार रिबूट करने की ज़रूरत नहीं है, लेकिन यह अभी भी एक दर्द है, क्योंकि यह मेरी कुछ स्वचालित प्रक्रियाओं को तोड़ता है ...
3

मुझे कुछ उपाय मिले हैं। (1) आप पोर्ट को उसके डिफ़ॉल्ट मान में बदलने का प्रयास कर सकते हैं, फिर पूरे सिस्टम को पुनरारंभ करें। फिर इसे वांछित मूल्य में फिर से बदलने की कोशिश करें। (2) उदाहरण के लिए, अलग-अलग मूल्य के साथ प्रयास करें Port 10285। Google ने 54747 ... (3) के लिए कुछ परिणाम दिखाए, साथ ही SSH सर्वर एक साथ कई पोर्ट के साथ काम कर सकता है। प्रत्येक पोर्ट के लिए दो अलग-अलग निर्देश बनाएँ: Port 22और Port 54747, फिर फ़ायरवॉल में केवल दूसरा खोलें। (४) आप Match LocalPortनिर्देशन की कोशिश कर सकते हैं , जिसकी शुरुआत में रखा गया है sshd_c
पा ०४०80०

जवाबों:


2

ssh विन्यास के आधार पर systemd द्वारा "सॉकेट सक्रिय" हो सकता है, जिसका अर्थ है कि शुरू में यह systemd है जो सुनने के पोर्ट को सेट करता है, और sshd केवल तभी शुरू होता है जब कोई क्लाइंट पहले कनेक्ट होता है। यह स्टार्टअप समय को गति देने के लिए है: सेवा डेमॉन केवल मांग पर शुरू किए जाते हैं।

हालाँकि इसका मतलब है कि आपको सिस्टमड को मिलान पोर्ट पर भी कॉन्फ़िगर करना होगा। आपको सिस्टम कॉन्फ़िगरेशन मिलेगा /lib/systemd/system/ssh.socketजिसमें सूचियाँ दी गई हैं ListenStream=22। इसे ओवरराइड करने के लिए, एक फ़ाइल बनाएं /etc/systemd/system/ssh.socket.d/port.conf( ssh.socket.dयदि आवश्यक हो तो निर्देशिका बनाकर )

[Socket]
ListenStream=
ListenStream=54747

वांछित पोर्ट के लिए संख्या बदलें। पहली रिक्त प्रविष्टि पिछले डिफ़ॉल्ट को मिटा देती है, और बाद की प्रविष्टि नए को जोड़ती है। यह डिफ़ॉल्ट रूप से भेज दिया गया ओवरराइड करता है /lib/systemd/system/ssh.socketऔर इसे बदलने के अतिरिक्त किया जाना चाहिए /etc/ssh/sshd_config

फिर sudo systemctl daemon-reloadअपने परिवर्तनों के बारे में सिस्टमड बताने के लिए दौड़ें , और sudo systemctl reload sshयदि आपका ssh डेमन पहले चल रहा था।


यह उत्तर बहुत ही आशाजनक लग रहा है , लेकिन /etc/systemd/system/ssh.socket.d/port.confइसे नजरअंदाज किया जा रहा है और रिबूटिंग अभी भी 22 पर पोर्ट रीसेट करता है। क्या फ़ाइल का नाम प्रासंगिक है? उबंटू पर सिस्टमड ओवरराइड्स पर अच्छा प्रलेखन खोजने में सक्षम नहीं है ।
MestreLion

जब तक यह समाप्त नहीं होता तब तक फ़ाइल नाम मायने नहीं रखता .conf। देखें systemd-system.conf (5) systemd ओवरराइड विन्यास फाइल पर जानकारी के लिए।
रॉबी बसाक

इसके अलावा आप systemctl status ssh.socketयह देखने के लिए चल सकते हैं कि क्या यह सक्षम है और यह क्या सुन रहा है।
रॉबी बसाक

2
यह काम!!! अंत में इस मिस्टी को हल किया जाता है! लेकिन बाद में मैंने देखा कि मैं दोनों बंदरगाहों का उपयोग करने में सक्षम था : डिफ़ॉल्ट 22 और कस्टम एक। ListenStream=कस्टम पोर्ट से पहले एक लाइन जोड़ने से इस पर रोक लगी, निश्चित रूप से क्यों नहीं। हो सकता है कि यह " ListenStream=22डिफ़ॉल्ट " सेटिंग को डिफ़ॉल्ट में /lib/systemd/system/ssh.socket? सेटिंग्स को ओवरराइड करने का अजीब तरीका। शायद इस जवाब में जोड़ने के लायक है?
MestreLion

@MestreLion आह, यह सही है। मैं जवाब अपडेट कर दूंगा। धन्यवाद!
रॉबी बसाक

0

/etc/ssh/sshd_configफ़ाइल में अपनी पोर्ट सेटिंग्स सत्यापित करें । सुनिश्चित करें कि आप sudo या sudo समूह के उपयोगकर्ता के रूप में संपादन कर रहे हैं। पोर्ट सेट करने के लिए आपको बस एक लाइन टाइप Port 54747.करना है, अब ssh सर्विस को रन करके रिस्टार्ट service sshd restart.करें। फिर वेरिफाई करें कि sudo netstat -lntp | grep ssh.रिबूट और टेस्ट चलाकर उस पोर्ट पर ssh सुन रहा है ।

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


मैंने एक बैकअप किया और फ़ाइल को sudo के रूप में संपादित किया, और डिफ़ॉल्ट Port 22लाइन को Port 54747केवल बदल दिया । इसके अलावा, आपने मुझे जो नेटस्टैट दिया था, उसका कोई आउटपुट नहीं था। मैंने अपने ओपी में एक संशोधित एक जोड़ा
3rgo

आप एक कुंजी के साथ जुड़ रहे हैं? तो अगर आप की तरह जोड़ने होना चाहिए: ssh -i key.txt user@ipaddress -p 54747। यह भी जांचें कि क्या उस पोर्ट पर कुछ और सुनाई दे रहा है। करते हैं sudo lsof -i | grep ssh। आप यह सुनिश्चित करने के लिए अपने फ़ायरवॉल की भी जांच कर सकते हैं कि वह कुछ भी अवरुद्ध न करे। कार्य करें: sudo ufw status
G_Style

54747 पर कोई पोर्ट उपयोग नहीं किया गया (मेरा ओपी देखें, मैंने इसे जोड़ा)। मैं आपके आदेशों के आउटपुट को भी इसमें जोड़ रहा हूं
3rgo

आपकी समस्या के बारे में कुछ और विचार करने के बाद, मुझे लगता है कि यह आपका सेटअप नहीं है, लेकिन जिस तरह से आप रिबूट कर रहे हैं, वह इस समस्या का कारण बन रहा है। जब आप रिबूट करते हैं तो आपको कमांड का उपयोग करना चाहिए shutdown -r now। एक कोशिश दें और परिणाम हमें बताएं। संदर्भ के लिए इस लेख को देखें: askubuntu.com/questions/483670/…
G_Style

मैंने अभी-अभी कोशिश की और उसी परिणाम के रूप में sudo reboot -h nowया `सूदो रिबूट``
3rgo

0

कभी-कभी चीजें गलत हो जाती हैं। यदि मैं आपकी जगह पर होता, तो मैं इसके साथ प्रयास करता:

cp /etc/ssh/sshd_config $HOME
sudo apt-get --reinstall install openssh-server

क्या मुझे सर्वर तक भौतिक रूप से पहुंचने की आवश्यकता होगी? यदि हां, तो मैं इसे केवल कल शाम
3rgo

हाय @ 3rgo, मुझे लगता है कि आपको भौतिक पहुंच की आवश्यकता नहीं है। मैं इसे अपने VPS पर आज़माता हूँ। अपने घर उबंटू सर्वर पर भी, जबकि मुझे एसएसएच के माध्यम से लॉग इन किया गया था। यहां तक ​​कि कनेक्शन भी बाधित नहीं हुआ। cpकमांड केवल मामले में है, आमतौर पर पुनर्स्थापना प्रक्रिया कॉन्फ़िगरेशन फ़ाइलों को स्पर्श नहीं करती है।
पा ४० 14०

नमस्ते! मैंने पुनः स्थापित करने की कोशिश की, लेकिन कुछ भी नहीं बदला, मुझे अभी भी वही समस्या है ...
3

0

ssh क्लाइंट प्रक्रिया है जो ssh सर्वर के उपयोगकर्ता सत्र कनेक्शन को मध्यस्थता और बनाए रखता है। sshd डेमॉन है जो ssh सर्वर पर रन करने और ssh कनेक्शन अनुरोधों को प्रमाणित करने के लिए प्रमाणित करता है।

Sshd सेवा शुरू करते समय जो sshd सर्वर पर विन्यास फाइल है (जिसे संपादित करने के लिए sudo विशेषाधिकारों की आवश्यकता होती है) है

/etc/ssh/sshd_config

सेवा शुरू होनी चाहिए

/etc/systemd/system/sshd.service

Sshd को पुनरारंभ करने के लिए जिसमें sshd_config फ़ाइल को फिर से पढ़ना शामिल है

sudo service sshd restart

यह देखने के लिए कि sshd डेमॉन किस पोर्ट को सुन रहा है, साथ ही ssh सर्वर टाइप पर अन्य उपयोगी जानकारी

sudo service sshd status

इन चरणों को निर्दिष्ट क्रम में करें:

Ssh सर्वर को रिबूट करें

Ssh सर्वर पर एक टर्मिनल सत्र खोलें (इसमें ssh कनेक्शन नहीं)

प्रकार hostname

यदि होस्टनाम ssh सर्वर (इस मामले में एटलस) का नाम वापस नहीं करता है, तो पिछले चरण को सही ढंग से फिर से करें।

grep Port /etc/ssh/sshd_config - पोर्ट नंबर नोट करें। आपके द्वारा निर्दिष्ट एक होना चाहिए

sudo service sshd status

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

ये कदम संभवतः आपके द्वारा पूछे जा रहे समस्या के मूल कारण की पहचान करेंगे।

परीक्षण के प्रयोजनों के लिए और सादगी के लिए: ग्राहक पक्ष पर, टर्मिनल सत्र से आप ssh सर्वर में निम्नानुसार होगा

ssh -l username -p 54747 hostname

ओपी फीडबैक के आधार पर, मुझे संदेह है कि sshd बूटअप पर शुरू नहीं हो रहा है, लेकिन मैन्युअल रूप से आह्वान करने पर सही ढंग से शुरू होता है। पोर्ट 22 के माध्यम से सफल ssh कनेक्शन अच्छी तरह से ssh सर्वर से कनेक्ट नहीं हो सकता है, लेकिन कुछ और (जैसे लोकलहोस्ट) के लिए। Ssh टाइप के माध्यम से कनेक्ट करने के बाद इसे साबित या डिबंक करना

hostname

ओपी क्या कह रहा है, इसके आधार पर, मैं अनुमान लगा रहा हूं कि होस्टनाम ssh सर्वर एटलस नहीं होगा।

इसे अलग करने के लिए, ssh सर्वर को रिबूट करने के बाद, लेकिन आगे कुछ करने से पहले , ssh सर्वर (Atlas) प्रकार पर टर्मिनल सत्र से

ssh localhost

यदि यह विफल रहता है, जैसा कि यह होना चाहिए, तब

ssh -p 54747 localhost

यदि यह काम नहीं करता है तो दौड़ने पर प्राप्त परिणामों की पुष्टि करेगा

sudo service sshd status

नमस्ते ! मैंने घटनाओं का एक क्रम जोड़ा ताकि आप बेहतर समझ सकें। मैं एसएसएच कमांड का उपयोग कर रहा हूं ssh -p <PORT> <USER>@<IP>, मेरी निजी कुंजी एजेंट के साथ जोड़ी गई है।
3

बहुत अच्छा। चरण 6a बनाएं: sshd सर्वर पर, sudo सेवा sshd स्थिति। यदि यह पोर्ट 22 की रिपोर्ट करता है तो वहाँ एक फर्जी sshd_config फ़ाइल होती है जिसे कॉल किया जा रहा है।
jones0610

कहते हैं, "निष्क्रिय (मृत)" (एक सेकंड में मेरे ओपी में पूर्ण उत्पादन देखें)
3rgo

तो अगर यह मर चुका है (सक्रिय नहीं है और चल रहा है) तो आप मशीन में ssh-ing नहीं कर रहे हैं जो आपको लगता है कि आप हैं। Sshd सर्वर पर, ps -ef टाइप करें | grep sshd यदि sshd सर्वर पर sshd डेमन वास्तव में मर चुका है, तो कोई भी sshd प्रक्रियाएं नहीं चल रही होंगी और इस प्रकार आप जीत गए, उपयोग किए गए पोर्ट की परवाह किए बिना उसमें ssh करने में सक्षम न हों।
jones0610

2 sshd प्रक्रियाएं मिलीं ... मैंने विस्तृत आउटपुट जोड़ा है
3rgo

0

संभवतः आपने अभी उत्तर दिया Y जब आपके sshd_config और पैकेज के बीच अंतर का पता चला। यह पूछता है कि क्या आप पैकेज मंटेनर के संस्करण को स्थापित करना चाहते हैं या अपना रखना चाहते हैं।


1
मुझे याद नहीं है कि इस तरह की बात पूछी जा रही है, लेकिन यह मानकर कि यह मामला है, मैं इसे ठीक करने के लिए क्या कर सकता हूं?
3

0

संभावित कारण जो मैं सोच सकता हूं

  1. एक अलग sshd बाइनरी बूट पर शुरू किया गया है या sshd एक अलग विन्यास के साथ शुरू किया गया है। हो सकता है कि systemd यहाँ अपराधी है - इसका फ़ाइल को /usr/lib/systemd/system/sshd.socketजाहिरा तौर पर पोर्ट बदलने का एक अलग तरीका है : https://www.vultr.com/docs/how-to-change-ssh-port-on-coreos
  2. Sshd शुरू होने पर सही / etc / या / etc / ssh अभी तक माउंट नहीं किया गया है, क्या यह आपके मशीन पर एक अलग वॉल्यूम है जो बाद में बूट प्रक्रिया में माउंट हो जाता है?
  3. sshd को बूट समय पर कॉन्फिग फाइल में रीड परमिशन की कमी है, हालाँकि मुझे नहीं पता कि sshd तब भी शुरू होता है।

2
मुझे लगता है कि आप इस पर हैं। और अगर यह एक ऐसा सर्वर है जो बहुत अधिक अपग्रेड के माध्यम से चला गया है, तो शायद स्टार्टअप स्क्रिप्ट का एक कॉकटेल है जो चारों ओर (sysv-init, upstart, systemd) बिछा रहा है। शायद एक सरल खोज और find /etc/ -iname "*ssh*"अधिक सुराग खोजने के लिए / etc / में सभी फ़ाइलों की जांच करें ।
बज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.