2012-04-19 13 views
29

मैं समय को काटने की कोशिश कर रहा हूं एसएसएच मेजबान से कनेक्शन खोलने की कोशिश कर रहा है। अगर मैं उदाहरण के लिए ssh www.google.com डालता हूं तो प्रॉम्प्ट वापस आने तक बहुत लंबा समय लगता है।एसएसएच कनेक्शन टाइमआउट सेट करें

मैं इसके बजाय ssh -o ConnectTimeout=10 www.google.com का उपयोग करने के बारे में पढ़ता हूं, लेकिन यह भी बहुत लंबा लगता है। क्या ब्लॉकिंग समय को कम करने के लिए शायद कई प्रयास किए जा सकते हैं?

+5

एसएसएच दस्तावेज़ों से: "डिफ़ॉल्ट सिस्टम टीसीपी टाइमआउट का उपयोग करने के बजाय एसएसएच सर्वर से कनेक्ट करते समय उपयोग किए गए टाइमआउट (सेकेंड में) निर्दिष्ट करने के लिए इसका उपयोग करें। यह मान तभी उपयोग किया जाता है जब लक्ष्य नीचे या वास्तव में पहुंच योग्य नहीं होता है, न कि जब यह कनेक्शन से इंकार कर देता है। " – Adi

उत्तर

44

समस्या यह हो सकती है कि एसएसएच से कनेक्ट करने का प्रयास कर रहा है सभीwww.google.com विभिन्न आईपी को हल करता है। उदाहरण के लिए मेरी मशीन पर:

# ssh -v -o ConnectTimeout=1 -o ConnectionAttempts=1 www.google.com 
OpenSSH_5.9p1, OpenSSL 0.9.8t 18 Jan 2012 
debug1: Connecting to www.google.com [173.194.43.20] port 22. 
debug1: connect to address 173.194.43.20 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.19] port 22. 
debug1: connect to address 173.194.43.19 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.18] port 22. 
debug1: connect to address 173.194.43.18 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.17] port 22. 
debug1: connect to address 173.194.43.17 port 22: Connection timed out 
debug1: Connecting to www.google.com [173.194.43.16] port 22. 
debug1: connect to address 173.194.43.16 port 22: Connection timed out 
ssh: connect to host www.google.com port 22: Connection timed out 

यदि मैं इसे एक विशिष्ट आईपी के साथ चलाता हूं, तो यह बहुत तेज़ हो जाता है।

संपादित: मैं इसे समय समाप्त हो गया है (time के साथ) और परिणाम हैं:

  • www.google.com - 5.086 सेकंड
  • 173.94.43.16 - 1.054 सेकंड
2

कनेक्टटाइमआउट विकल्प आपको अपने एसएसएच क्लाइंट को यह बताने की अनुमति देता है कि आप त्रुटि लौटने से पहले कनेक्शन के लिए कितने समय तक इंतजार करना चाहते हैं। कनेक्टटाइमआउट को 1 पर सेट करके, आप प्रभावी ढंग से कह रहे हैं "अधिकतर 1 सेकंड के लिए प्रयास करें और फिर विफल हो जाएं यदि आपने अभी तक कनेक्ट नहीं किया है"।

समस्या यह है कि जब आप नाम से कनेक्ट होते हैं, तो DNS लुकअप में कई सेकंड लग सकते हैं। आईपी ​​पते से कनेक्ट करना बहुत तेज है, और वास्तव में एक या दो सेकंड में काम कर सकता है। क्या sinelaw अनुभव कर रहा है कि DNS नाम से कनेक्ट करने के हर प्रयास एक सेकंड के भीतर होने में विफल रहा है। कनेक्टटाइमआउट की डिफ़ॉल्ट सेटिंग लिनक्स कर्नेल को टाइमआउट से कनेक्ट करती है, जो आमतौर पर काफी लंबी होती है।

+4

एक DNS लुकअप के लिए कई सेकंड लगने के लिए यह काफी असामान्य है। –

संबंधित मुद्दे