ssh कनेक्शन हमेशा के लिए शुरू होता है, "प्रतिज्ञा: नेटवर्क" पर अटक जाता है


44

Ssh का उपयोग करने वाले मेरे एक सर्वर से कनेक्शन आरंभ होने में 20 सेकंड से अधिक समय लगता है।

यह LAN या WAN स्थितियों से संबंधित नहीं है, क्योंकि कनेक्शन खुद को समान (ssh लोकलहोस्ट) लेता है। कनेक्शन अंत में establised होने के बाद, यह सर्वर के साथ इंटरैक्ट करने के लिए सुपर फास्ट है।

प्रयोग -vvv से पता चलता है कि कनेक्शन "प्रतिज्ञा: नेटवर्क" कहने के बाद अटक गया है। इस बिंदु पर, प्रमाणीकरण (यहां कुंजी का उपयोग करके) पहले से ही किया गया है, जैसा कि यहां दिखाई दे रहा है:

...
debug1: Authentication succeeded (publickey).
Authenticated to myserver.mydomain.com ([xx.xx.xx.xx]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network

((15 से 25 सेकंड के लिए यहां अटका ...)

debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
...

सर्वर Ubuntu 16.04 है। यह पहले से ही मेरे साथ एक और सर्वर के साथ अतीत में हुआ था (उबंटू 12.04 था), nerver ने समाधान पाया और समस्या थोड़ी देर बाद गायब हो गई ...

sshd_config उबंटू द्वारा प्रदान किया गया डिफ़ॉल्ट है।

अब तक मैंने कोशिश की है:

  • उपयोग -o GSSAPIAuthentication = ssh कमांड में नहीं
  • कुंजी के बजाय पासवर्ड का उपयोग करना
  • का उपयोग करते हुए UsePrivilegeSeparation हाँ के बजाय, sshd_config में

1
आमतौर पर मेरे लिए धीमी गति से SSH कनेक्शन DNS समस्याएं हैं, क्या यहां ऐसा हो सकता है? उदाहरण के लिए, सर्वर क्लाइंट के आईपी के लिए एक रिवर्स डीएनएस करने की कोशिश में फंस सकता है और उस समय के लिए इंतजार कर सकता है
एरिक रेनॉफ

वास्तव में नहीं: डिफ़ॉल्ट रूप से UseDNS sshd_config में परिभाषित नहीं है और मैन पेज कहता है कि यह विकल्प डिफ़ॉल्ट रूप से "नहीं" है।
एम-जैक

3
कुछ Googling का सुझाव है कि यह रिबूट किए बिना सिस्टमड को अपडेट करने के कारण हो सकता है। और 12 जुलाई को xenial के लिए एक सिस्टम अपडेट था । systemctl restart systemd-logindमेरे लिए थोड़े समय के लिए ही समस्या को ठीक करता है।
इवान कोज़िक

या यदि आप pam_systemd(sshd:session): Failed to create session: Connection timed outएक उत्तर में उल्लिखित देख रहे हैं , तो यह github.com/systemd/systemd/issues/2925
Ivan Kozik

मैं यहाँ आया था एक अद्यतन के बाद यह समस्या थी, और @ IvanKozik के सुझाव ने इस समस्या को ठीक किया - यानी systemctl पुनरारंभ systemd-logind - तो उसके लिए धन्यवाद।
पॉल एम

जवाबों:


43

यह शायद एक मुद्दा है D-Busऔर systemd। यदि dbusकिसी कारण से सेवा को पुनः आरंभ किया जाता है, तो आपको पुनः आरंभ करने की भी आवश्यकता होगी systemd-logind

आप जाँच सकते हैं कि क्या यह ssh डेमन लॉग खोलकर समस्या है (उबंटू पर यह होना चाहिए /var/log/auth.log) और जांचें कि क्या यह लाइनें हैं:

sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out

यदि हाँ, तो बस systemd-logindसेवा पुनः आरंभ करें :

systemctl restart systemd-logind

मैं CentOS 7 पर यही मुद्दा messagebusथा , क्योंकि फिर से शुरू किया गया था (जो कि कैसे D-BusCentOS पर सेवा कहा जाता है)।


मैंने सिस्टमड-लॉगइंड को फिर से शुरू करने की कोशिश की, लेकिन थोड़ी देर बाद यह कहता है कि पॉलिसीकीट डेमॉन बस से कट गया। अब हम एक पंजीकृत प्रमाणीकरण एजेंट नहीं हैं। Systemd-logind.service के लिए नौकरी विफल रही क्योंकि एक समय सीमा पार हो गई थी। विवरण के लिए "systemctl स्टेटस systemd-logind.service" और "journalctl -xe" देखें।
कुन रेन

@KunRen polkitका उपयोग करके आपको संभवतः सेवा को पुनरारंभ करना होगा systemctl restart polkit
स्ट्रिन्हिन्जा कस्टूडिक

16

जवाब मिला:

sPd_config फ़ाइल में YesPAM को हां से नहीं में बदला

Ssh सेवा को पुनरारंभ करने के बाद, कनेक्शन अब सर्वर के लिए तत्काल है। इस सर्वर पर, PAM को ldap से जोड़ा जाता है, इसलिए शायद यही कारण है, भले ही यहाँ मैं सर्वर पर घोषित उपयोगकर्ता के साथ जुड़ रहा हूँ, LDAP नहीं।

खैर, यह समस्या को दरकिनार करने का एक और तरीका है, वास्तव में समाधान नहीं है ... मेरे पास अन्य सर्वर उसी तरह सेट हैं जो इस मुद्दे को नहीं उठा रहे हैं।

आशा है कि यह किसी की मदद कर सकता है ...


1
अन्य के लिए UsePAM को बदलने का कोई अन्य प्रभाव नहीं है। इस चर्चा को देखें इसलिए मुझे उपयोगकर्ता को एक पासवर्ड सेट करना पड़ा, क्योंकि मुझे त्रुटियां मिलीं जैसे कि यूजर नेगियोस की अनुमति नहीं है क्योंकि खाता बंद है
M-जैक

4
यह वास्तव में एक अच्छा विचार नहीं है।
जकूजी जूल

1
क्यों ?? कोई विकल्प?
एम-जैक

8
पीएएम का उपयोग आधुनिक प्रणालियों में खाता प्रबंधन के आसपास अन्य चीजों के लिए किया जाता है। इसे बंद करने के बजाय, आप बेहतर तरीके से जांच करेंगे कि PAM स्टैक में क्या चल रहा है और इसमें इतना समय क्यों लगता है।
जकूजी

SSH पहुंच के लिए सक्षम बहुत ही अप्रयुक्त PAM मॉड्यूल को छोड़ना एक सुरक्षा छेद है। सुरक्षा के दृष्टिकोण से SSH जैसी महत्वपूर्ण सेवाओं तक पहुँच को सीमित करना हमेशा किसी अन्य सेवा के लिए भी एक अच्छा विचार है। जब आप PAM मॉड्यूल को SSH के साथ सहयोग करना चाहते हैं? उदाहरण के लिए: जब आपको इसे winbind के माध्यम से सक्रिय निर्देशिका के साथ एकीकृत करने की आवश्यकता होती है, जब आपको Google टोकन के साथ दो कारक परिस्थिति की आवश्यकता होती है, आदि अन्य मामलों में (पासवार्ड और छाया का उपयोग करते हुए) इसे बंद करना पूरी तरह से सुरक्षित है। PAM का प्रत्येक उपयोगकर्ता इसे देखेगा: cve.mitre.org/cgi-bin/cvekey.cgi?keyword=pam
Michal Sokolowski

10

यह मेरे दो फेडोरा 25 सर्वरों पर हुआ, और बहुत सारे असफल एसएसएच लॉगिन प्रयासों के कारण था।

(उपयोग करने GSSAPIAuthentication=noऔर UseDNS=noफिर से शुरू करने के सामान्य सुझावों से systemd-logindकोई फर्क नहीं पड़ा।)

इन सर्वरों पर, /etc/pam.d/postloginशामिल हैं:

session     optional      pam_lastlog.so silent noupdate showfailed

विकल्प के लिए वह आदमी पृष्ठ pam_lastlogबताता है showfailed:

असफल लॉगिन प्रयासों की संख्या और btmp से अंतिम विफल प्रयास की तिथि।

इन सर्वरों पर, /var/log/btmpकई असफल लॉगिन प्रयासों के कारण फाइलें बहुत बड़ी थीं। btmpलॉग फाइल या तो घुमाया जा रहा नहीं कर रहे थे।

मैंने logrotateयह सुनिश्चित करने के लिए पैकेज स्थापित किया कि भविष्य में लॉग फ़ाइलों को घुमाया जाएगा। (फेडोरा पर, कॉन्फ़िगरेशन जो जहाजों logrotateके रोटेशन को संभालता है /var/log/btmp।)

मैंने विशाल btmpलॉग फ़ाइलों को भी हटा दिया ; जैसे ही मैंने ऐसा किया, सर्वर से जुड़ना फिर से तात्कालिक था।


इससे मेरी समस्या हल हो गई! धन्यवाद। अच्छा पकड़ा। SSH 5-10 सेकंड ले रहा था, और अब यह एक आँख की झपकी से कम है। यह एक वीएम पर है जिसे मैंने वर्षों से सार्वजनिक इंटरनेट से जोड़ा है। इसके फ़ायरवॉल नियमों को शायद थोड़ा बेहतर ढंग से देखा जा सकता है, अब जब मैं इसके बारे में सोचता हूं। दूसरों के लिए, यह सब मैंने किया है: sudo truncate -s 0 /var/log/btmp- मेरा आकार 2.7G था।
कार्ल बेनेट

2

मेरे मामले में कारण एक दुर्घटनाग्रस्त rsyslogd था। मुझे यह पता चला क्योंकि उदा / var / log / syslog या /var/log/mail.log में अधिक लॉग-संदेश नहीं थे

इसलिए service rsyslog restartहमारे लिए समस्या का समाधान किया।


CentOS 6.10 चलाने वाले हमारे सर्वर पर समान कारण। Rsyslog के पुनः आरंभ ने इसकी देखभाल की। बात यह है, यह मरा नहीं था। यह चल रहा था, लेकिन स्पष्ट रूप से उपयोगी कुछ भी नहीं कर रहा था।
यूटाजार्हेड

1

मेरे लिए यह समस्या बड़ी (सैकड़ों MB) btmpफ़ाइल के कारण है। यह फ़ाइल लॉगिन प्रयासों को लॉग करती है। जब लोग आपके पासवर्ड को बाध्य करने की कोशिश कर रहे हैं तो यह फ़ाइल बड़ी हो सकती है और "pledge: network"चरण में देरी का कारण बन सकती है ।

लॉग फ़ाइल साफ़ करने का प्रयास करें

echo "" > /var/log/btmp

और देखें कि क्या यह मदद करता है।


3
इसके लिए बहुत अधिक स्पष्टीकरण की आवश्यकता है। शुरुआत के लिए, आपको क्यों लगता है कि यह मददगार है?
स्वेन

टिप: बस टाइपिंग :> /var/log/btmpएक ही btw करता है।
मारीस

1

मेरे लिए समाधान जोड़ रहा था

UseDNS no

करने के लिए /etc/ssh/sshd_configऔर उसके बाद निश्चित रूप से service ssh restart(हमारे Debian / जेसी सर्वर पर)। और कुछ नहीं...

पहले :

ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 13.440 total
ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 20.990 total
ssh git@git.*****.de true  0.03s user 0.02s system 0% cpu 31.114 total
ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 25.898 total

के बाद :

ssh git@git.*****.de true  0.03s user 0.02s system 5% cpu 0.832 total
ssh git@git.*****.de true  0.03s user 0.01s system 7% cpu 0.523 total
ssh git@git.*****.de true  0.03s user 0.01s system 7% cpu 0.574 total

नहीं, जोड़ना UseDNS noपूरी तरह से अलग समस्या के लिए एक समाधान है।
कसपर

@kasperd इससे कोई फर्क नहीं पड़ता। मेरे मामले में मेरे पास बहुत ही लक्षण थे (संक्षेप में: "प्रतिज्ञा: नेटवर्क") कहने के बाद अटक गया और यह आखिरकार क्या मदद करता है, इसलिए यह कम से कम एक समान समस्या का समाधान है और मुझे यकीन है कि यह एक या एक मदद करेगा कुछ बिंदु पर अन्य।
तमसागल

यहां एक ही, कनेक्शन के दौरान दो लटके हुए, एक के बाद sign_and_send_pubkeyएक, एक लंबे समय के बाद pledge: network। केवल UseDNS noबाद के साथ जोड़ने से service ssh restartएक पुरानी उबंटू 14.04.5 एलटीएस स्थापना पर समस्या का समाधान हुआ।
हाउंड

0

मैंने अपने डिबग फीडबैक में निम्नलिखित पंक्ति देखी:

Control socket connect(/var/lib/jenkins/.ssh/USER@HOST:22): Permission denied

जो एक फाइल थी, जिसके स्वामित्व में root:rootमैं था jenkins। इस फ़ाइल को हटाने से मेरी समस्याएं हल हो गईं।

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