मज़बूती से SSH सुरंग को कैसे खुला रखें?


234

मैं काम से एक SSH सुरंग का उपयोग विभिन्न निष्क्रिय फायरवॉल (यह मेरे बॉस के साथ ठीक है :)) के आसपास जाने के लिए करता हूं। समस्या यह है कि थोड़ी देर के बाद, ssh कनेक्शन आमतौर पर लटका रहता है, और सुरंग टूट जाती है।

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

बोनस अंक जो मुझे बता सकता है कि मेरे ssh कनेक्शन को लटकने से कैसे रोका जाए, बिल्कुल!


यह निष्क्रियता के कारण आपकी सुरंग मृत है? मुझे यह समस्या तब हुई जब मैंने अपने फोन से बंदरगाहों की सुरंग बनाई तो मैंने आखिरकार watchकमांड का उपयोग करके इसे "जीवित" बनाने के लिए कनेक्शन पर डमी कमांड को समाप्त कर दिया watch -n1 60 echo "wiiiii"। जब तक नेटवर्क नहीं टूटेगा या आप इसका उपयोग नहीं करेंगे तब तक सुरंग नहीं मरेगी।
erm3nda

जवाबों:


280

लगता है जैसे आपको आटोशा चाहिए । यह एक ssh सुरंग की निगरानी करेगा और आवश्यकतानुसार इसे पुनः आरंभ करेगा। हमने इसे कुछ वर्षों के लिए उपयोग किया है और यह अच्छी तरह से काम करता है।

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

-M पैरामीटर पर अधिक जानकारी यहां


2
ऑटो के लिए +1, यह वही करता है जो टिन पर कहता है। मेरा मानना ​​है कि इसकी कार्यक्षमता का एक हिस्सा किसी भी तरह के टाइमआउट को रोकने के लिए जिंदा स्टाइल के पैकेट भेजना भी है।
akent

30
क्या आप autosshउत्तर में उपयोग कर उदाहरण सुरंग रख सकते हैं ?
एहतेश चौधरी

5
autossh -f -nNT -i ~/keypair.pem -R 2000:localhost:22 username@myoutsidebox.com आप देख सकते हैं कि मैंने इसे -nNT का उपयोग करके सेट किया है, जो रिमोट टर्मिनल नहीं बनाता है ताकि मैं ऑटोसफ को पृष्ठभूमि में रख सकूं, और SSH के लिए -i विकल्प .pem फ़ाइल का उपयोग कर सकूं। यदि आप हर समय एक कनेक्शन खुला रखने जा रहे हैं, तो मैं निश्चित रूप से अतिरिक्त सेटअप के माध्यम से जाने की सलाह देता हूं।
जुकल

2
इसके लायक क्या है, ऐसा लगता है कि यह आम तौर पर -Mपैरामीटर को छोड़ना बेहतर है : Bugs.debian.org/cgi-bin/bugreport.cgi?bug=351162
rinogo

2
मैंने इसे नेटवर्क परिवर्तन पर पुनः प्रयास करने के लिए किया था, यह मेरे लिए अच्छी तरह से काम करता है: autossh -M 0 -o "ServerAliveInterval 10" -o "ServerAliveCountMax 2" -L 9999: localhost: 19999 server@example.com
ल्यूक स्टेनली

39

सभी स्टेटफुल फायरवॉल कुछ समय के लिए उस कनेक्शन के लिए एक पैकेट नहीं देखने के बाद एक कनेक्शन के बारे में भूल जाते हैं (राज्य तालिकाओं को कनेक्शन से भरा होने से रोकने के लिए जहां दोनों छोर कनेक्शन को बंद किए बिना मर गए)। अधिकांश टीसीपी कार्यान्वयन दूसरी तरफ से सुनवाई के बिना लंबे समय के बाद एक रखवाले पैकेट भेजेंगे (2 घंटे एक सामान्य मूल्य है)। यदि, हालांकि, एक स्टेटफुल फ़ायरवॉल है जो कनेक्शन के बारे में भूल जाता है इससे पहले कि कीपैलिव पैकेट भेजे जा सकते हैं, एक लंबे समय तक जीवित लेकिन निष्क्रिय कनेक्शन मर जाएगा।

यदि ऐसा है, तो कनेक्शन को निष्क्रिय होने से रोकने के लिए समाधान है। OpenSSH में ServerAliveInterval नामक एक विकल्प होता है जिसका उपयोग कनेक्शन को बहुत अधिक समय तक निष्क्रिय रहने से रोकने के लिए किया जा सकता है (बोनस के रूप में, यह पता लगाएगा कि कनेक्शन निष्क्रिय होने पर भी पीयर की जल्द ही मृत्यु हो गई)।


निर्दिष्ट अंतराल सेकंड में है, इसलिए आप कुछ ठीक ट्यूनिंग प्रदान कर सकते हैं। यदि आपके स्टेटफुल फ़ायरवॉल में 5 मिनट का निष्क्रिय समय है, तो कनेक्शन खुला रखने के लिए 60 या 120 सेकंड का समय पर्याप्त है। यह उन तरीकों में से एक है जो मैं अपने ssh सत्रों को अपने होम राउटर के माध्यम से खुला रखता हूं।
डैरेन हॉल

धन्यवाद, इससे मदद मिली। लेकिन ध्यान दें (एक निचले क्रम वाले उत्तर से, superuser.com/a/146641/115515 पर ) यदि आप ServerAliveInterval को निर्दिष्ट करते हैं और ServerAliveCountMax को नहीं, तो आप जानबूझकर जल्द से जल्द अलग हो सकते हैं।
मेटामेट

4
@metamatt, आपके द्वारा दिए गए निचले क्रम वाले उत्तर को अच्छे कारण के लिए निम्न-श्रेणी में रखा गया है: IT IS WRONG।
लैम्बर्ट

24

अपने स्वयं के मैक या लिनक्स मशीन पर अपने ssh को कॉन्फ़िगर करें हर 3 मिनट में सर्वर ssh को जीवित रखें। एक टर्मिनल खोलें और अपने घर में अपने अदृश्य .shsh पर जाएं:

cd ~/.ssh/ 

फिर 1 लाइन की कॉन्फिगर फाइल बनाएं:

echo "ServerAliveInterval 180" >> config

आपको भी जोड़ना चाहिए:

ServerAliveCountMax xxxx (high number)

डिफ़ॉल्ट 3 है इसलिए ServerAliveInterval 180 9 मिनट (ServerAliveInterval द्वारा निर्दिष्ट 3-मिनट के अंतराल के 3) के बाद भेजना बंद कर देगा।


2
ध्यान दें कि यदि आपके पास पहले से ही एक कॉन्फिग फाइल है, तो आपकी कमांड की सिफारिश नहीं की जाती है। पुनर्निर्देशन के लिए >> का उपयोग करना बेहतर होगा!
पेल्टियर

ServerAliveInterval 180हमें 6 मिनट क्यों देता है ? अंतर्ज्ञान मुझे यह कोशिश करता है 180/60 == 3:। तो, ServerAliveInterval30 सेकंड के गुणकों में काम करता है ?
nemesisfixx

@mcememesis: ServerAliveInterval 180 का अर्थ 3 मिनट है। ServerAliveCountMax 3 का डिफ़ॉल्ट उन अंतरालों में से 3 का अर्थ है, इसलिए 9 मिनट।
मेटामैट

2
मैं इस जवाब को वोट कर रहा हूं क्योंकि ServerAliveCountMax का उल्लेख करने के लिए धन्यवाद, और अगर आप ServerAliveCterMax के बिना ServerAliveInterval को निर्दिष्ट करते हैं तो क्या होता है। लेकिन पूर्ववर्ती टिप्पणियों की तरह, मुझे लगता है कि गणना "के बाद भेजना बंद कर देगी" गलत है, और मुझे लगता है कि यह उत्तर बेहतर होगा यदि यह इन विकल्पों पर जानकारी देता है, न कि हमें बताए कि उन्हें सीडी और इको कमांड के साथ कैसे लागू किया जाए। ।
मेटामेट

20
डाउनवोटिंग क्योंकि यह ServerAliveCountMax को "उच्च संख्या" पर सेट करने का कोई मतलब नहीं है। ServerAliveCountMax यह निर्दिष्ट करता है कि यह कितनी बार "रखने" से पहले संदेश भेजने की कोशिश करेगा। डिफ़ॉल्ट 3 है, इसलिए ServerAliveInterval 180 के साथ, यह केवल तभी भेजना बंद कर देगा जब सर्वर ने 9 मिनट के बाद जवाब नहीं दिया है, जिस स्थिति में आपका कनेक्शन संभवतः ठीक है और वास्तव में मृत है।
लैंबार्ट

22

मैंने पिछली बैश मर जाने पर नई एसएचएस सुरंगों को रखने के लिए निम्नलिखित बैश स्क्रिप्ट का उपयोग किया है। स्क्रिप्ट का उपयोग तब आसान होता है जब आप नहीं चाहते हैं या अतिरिक्त पैकेज स्थापित नहीं कर सकते हैं या संकलक का उपयोग नहीं कर सकते हैं।

while true
do
  ssh <ssh_options> [user@]hostname
  sleep 15
done

ध्यान दें कि इसके लिए कनेक्शन को स्वचालित रूप से स्थापित करने के लिए एक कीफाइल की आवश्यकता होती है, लेकिन ऑटोसह के मामले में भी यही है।


2
आपको ऐसे किसी भी कारण को जोड़ना चाहिए जो आप इस स्क्रिप्ट का उपयोग ऑटोसो पर करेंगे, या यह सिर्फ इतना है कि यह इस तरह से आसान है?
कियारास

4
यह मदद नहीं करेगा यदि ssh खुद को जमा देता है, तो क्या यह होगा?
nafg

1
यदि आप सर्वर में चीजों को स्थापित नहीं कर सकते हैं तो यह मदद करता है। ऑटोसह प्रीइंस्टॉल्ड और ब्यूरोक्रेसी नहीं आती है यह कभी-कभी बहुत ही अप्रिय है।
क्वार्क्स

हां, बेहतर है कि चीजों को स्थापित न करें। मैं इसे एक साल के लिए इस तरह से कर रहा हूं कि एक रिमोट मशीन को सुलभ रखने के लिए मेरा एकमात्र तरीका है (यहां तक ​​कि इसे रिबूट पर चलाने के लिए कोंट्राब सेट करें)। यह कभी विफल नहीं हुआ, और इससे भी महत्वपूर्ण बात, मुझे पता है कि यह कभी असफल क्यों नहीं होगा।
सूदो

16

सिस्टमड इसके लिए आदर्श रूप से अनुकूल है।

/etc/systemd/system/sshtunnel.serviceयुक्त एक सेवा फ़ाइल बनाएँ :

[Unit]
Description=SSH Tunnel
After=network.target

[Service]
Restart=always
RestartSec=20
User=sshtunnel
ExecStart=/bin/ssh -NT -o ServerAliveInterval=60 -L 5900:localhost:5900 user@otherserver

[Install]
WantedBy=multi-user.target

(सूट के लिए ssh कमांड को संशोधित करें)

  • यह उपयोगकर्ता के रूप में चलेगा sshtunnelइसलिए सुनिश्चित करें कि उपयोगकर्ता पहले मौजूद है
  • systemctl enable sshtunnelइसे बूट समय पर शुरू करने के लिए सेट करने के लिए जारी करें
  • मुद्दा systemctl start sshtunnelतुरंत शुरू करने के लिए

अद्यतन जनवरी 2018 : कुछ डिस्ट्रोस (उदाहरण के लिए फेडोरा 27) एसएसएच के उपयोग को सिस्टमड इनिट से रोकने के लिए SELinux नीति का उपयोग कर सकते हैं, इस मामले में आवश्यक छूट प्रदान करने के लिए एक कस्टम नीति बनाने की आवश्यकता होगी।


2
यह मेरे जिस्ट के समान दिखता है: gist.github.com/guettli/… फीडबैक का स्वागत है!
गुत्थी

एक systemdप्रणाली के लिए बहुत बढ़िया । यदि कोई उपयोग करता है Restart=on-failureतो मैन्युअल रूप से SSH क्लाइंट को मारना सफलता के साथ बाहर निकलने के साथ SSH क्लाइंट के रूप में रीस्टार्ट-बाय-सिस्टमड में परिणाम नहीं करेगा।
डेविड टोनहोफर

यदि आप तर्क सूची के ExecStartनिर्माण के लिए तर्क के रूप में दी गई एक (बैश) स्क्रिप्ट से ssh शुरू करना चाहते हैं ssh, तो बुनियादी जाँच आदि करें और फिर इसे स्क्रिप्ट से कॉल करें exec /bin/ssh -N ...। यहाँ मेरी आज्ञा है: exec /bin/ssh -N -oExitOnForwardFailure=Yes -oTCPKeepAlive=no -oServerAliveInterval=5 -oServerAliveCountMax=6 -i "${LOCAL_PRIVATE_KEY}" -L "${TUNNEL_INLET}:${TUNNEL_OUTLET}" "${REMOTE_USER}@${REMOTE_MACHINE}"जहाँ TUNNEL_INLET="127.0.0.1:3307"औरTUNNEL_OUTLET="127.0.0.1:3306"
डेविड टोनहोफर

10

यह सुनिश्चित करता है कि मुझे लगता है कि आप सभी गलत तरीके से ServerAliveCountMax कर रहे हैं। जैसा कि मैं डॉक्स को समझता हूं, यह सर्वर जिंदा संदेशों की संख्या है जो कनेक्शन को समाप्त किए बिना अनुत्तरित जा सकता है। तो ऐसे मामलों में जैसे हम यहां चर्चा कर रहे हैं, इसे एक उच्च मूल्य पर सेट करना सिर्फ यह सुनिश्चित करेगा कि एक त्रिशंकु कनेक्शन का पता नहीं लगाया जाएगा और समाप्त कर दिया जाएगा!

कनेक्शन के बारे में भूलकर फ़ायरवॉल के साथ समस्या को हल करने के लिए सर्वरएलाइवइंटरवॉल की स्थापना पर्याप्त होनी चाहिए, और सर्वरएलाइकाउंटमैक्स को कम रखने से ओरिजिनल सिरे को विफलता की सूचना मिलेगी और यदि कनेक्शन विफल रहता है तो उसे समाप्त कर सकते हैं।

आप क्या चाहते हैं, 1) सामान्य परिस्थितियों में स्थायी रूप से खुले रहने के लिए कनेक्शन के लिए, 2) कनेक्शन की विफलता का पता लगाने के लिए और असफलता पर बाहर निकलने के लिए मूल पक्ष, और 3) ssh कमांड के लिए हर बार इसे फिर से जारी किया जाए। बाहर निकलता है (आप ऐसा कैसे करते हैं जो बहुत ही प्लेटफॉर्म पर निर्भर है, जावा द्वारा सुझाई गई "जबकि सच्ची" स्क्रिप्ट एक तरह से OS XI है, वास्तव में एक लॉन्च आइटम सेट किया गया है)।


9

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

कनेक्टिविटी पूरी तरह से नीचे चले जाने की स्थिति में हमेशा श्वसन विधि का उपयोग करें, आपके पास कम से कम तीन विकल्प हैं:

  • ऑटो कार्यक्रम
  • बैश स्क्रिप्ट ( while true do ssh ...; sleep 5; done) स्लीप कमांड को नहीं हटाती है, sshजल्दी से विफल हो सकती है और आप बहुत सारी प्रक्रियाओं का जवाब देंगे
  • /etc/inittab, एक बॉक्स के लिए उपयोग करने के लिए भेज दिया और दूसरे देश में स्थापित, NAT के पीछे, बॉक्स को अग्रेषित किए बिना, आप इसे वापस करने के लिए एक ssh सुरंग बनाने के लिए कॉन्फ़िगर कर सकते हैं:

    tun1:2345:respawn:/usr/bin/ssh -i /path/to/rsaKey -f -N -o "ServerAliveInterval 180" -R 55002:localhost:22 user@publicip 'sleep 365d'
    
  • उबंटू पर अपस्टार्ट स्क्रिप्ट, जहां /etc/inittabउपलब्ध नहीं है:

    start on net-device-up IFACE=eth0
    stop on runlevel [01S6]
    respawn
    respawn limit 180 900
    exec ssh -i /path/to/rsaKey -N -o "ServerAliveInterval 180" -R 55002:localhost:22 user@publicip
    post-stop script
        sleep 5
    end script
    

या हमेशा दोनों विधियों का उपयोग करें।


1
यदि आप अपने सभी SSH कनेक्शन के लिए नहीं चाहते हैं तो इनलाइन विकल्प के लिए +1
user1146334

आप लिखते हैं "मामले में कनेक्टिविटी पूरी तरह से नीचे जाती है"। अब मुझे समझ में नहीं आ रहा है कि ऑटोह खुद को किन समस्याओं से ठीक करता है, और क्या नहीं करता है? मैंने सोचा, निश्चित रूप से, यह किसी भी टूटे हुए कनेक्शन की देखभाल करेगा, जैसे कि कुछ घंटों के लिए केबल को अनप्लग करना, लेकिन शायद नहीं?
मैड्स स्केजर्न

6

मैंने इस समस्या को इसके साथ हल किया:

संपादित करें

~/.ssh/config

और जोड़

ServerAliveInterval 15
ServerAliveCountMax 4

के अनुसार आदमी पेज ssh_config के लिए:

ServerAliveCountMax
         Sets the number of server alive messages (see below) which may be
         sent without ssh(1) receiving any messages back from the server.
         If this threshold is reached while server alive messages are
         being sent, ssh will disconnect from the server, terminating the
         session.  It is important to note that the use of server alive
         messages is very different from TCPKeepAlive (below).  The server
         alive messages are sent through the encrypted channel and there‐
         fore will not be spoofable.  The TCP keepalive option enabled by
         TCPKeepAlive is spoofable.  The server alive mechanism is valu‐
         able when the client or server depend on knowing when a connec‐
         tion has become inactive.

         The default value is 3.  If, for example, ServerAliveInterval
         (see below) is set to 15 and ServerAliveCountMax is left at the
         default, if the server becomes unresponsive, ssh will disconnect
         after approximately 45 seconds.  This option applies to protocol
         version 2 only.

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has
         been received from the server, ssh(1) will send a message through
         the encrypted channel to request a response from the server.  The
         default is 0, indicating that these messages will not be sent to
         the server.  This option applies to protocol version 2 only.

सर्वर को पिंग करने के लिए हर 15 सेकंड बहुत बार लगता है।
लैंबार्ट

@ लैम्बर्ट लेकिन अगर कनेक्शन वास्तव में परतदार है और अक्सर कनेक्शन छोड़ देता है, तो यह कम से कम एक मृत कनेक्शन का पता लगाता है और पहले से पुनः प्रयास करने का अवसर देता है।
बिंकी

4

ExitOnForwardFailure yesअन्य सुझावों के लिए एक अच्छा सहायक है। अगर यह कनेक्ट होता है, लेकिन यह आपके लिए उतना ही बेकार है, तो यह पोर्ट को स्थापित नहीं कर सकता, जैसे कि यह बिल्कुल भी जुड़ा नहीं था।


यह एक बहुत अच्छा विचार है। यहां तक ​​कि अगर पूर्व कनेक्शन को स्थानीय होस्ट की तुलना में रिमोट साइड में पहले से तय समय के रूप में माना जाता है, तो भी ऑटो बेकार है, क्योंकि इस मामले में स्थानीय होस्ट फिर से कनेक्ट करने का प्रयास करेगा, लेकिन पोर्ट अभी भी खुला होने के कारण इसे स्थापित नहीं किया जा सकता है।
राउल सालिनास-मोंटियागुडो

1

मुझे एसएसएच-सुरंग को लंबे समय तक बनाए रखने की आवश्यकता है। मेरा समाधान लिनक्स सर्वर से चल रहा था, और यह सिर्फ एक छोटा सी प्रोग्राम है जो कुंजी-आधारित प्रमाणीकरण का उपयोग करके ssh को प्रतिक्रिया देता है।

मैं फांसी के बारे में निश्चित नहीं हूं, लेकिन मैंने टाइमआउट के कारण सुरंगों को मर दिया है।

मुझे उत्तरदाता के लिए कोड प्रदान करना अच्छा लगेगा, लेकिन मैं इसे अभी नहीं ढूंढ सकता।


1

जब ऑटोशॉट जैसे उपकरण होते हैं, जो ssh सत्र को पुनः आरंभ करने में मदद करता है ... जो मुझे वास्तव में उपयोगी लगता है वह है 'स्क्रीन' कमांड को चलाना। यह आपको डिस्कनेक्ट करने के बाद भी आपके ssh सत्रों को फिर से शुरू करने की अनुमति देता है। विशेष रूप से उपयोगी यदि आपका कनेक्शन उतना विश्वसनीय नहीं है जितना होना चाहिए।

... यह 'सही' जवाब है अगर यह आपकी मदद करता है के रूप में चिह्नित करने के लिए मत भूलना! ;-)


7
... लेकिन सवाल यह था कि एसएसएच सुरंगों को कैसे खुला रखा जाए, न कि केवल एक टर्मिनल सत्र। स्क्रीन हालांकि महान है!
akent

मैं पहले से ही स्क्रीन का उपयोग करता हूं, लेकिन यह मेरी समस्या का समाधान नहीं करता है: - / आपके उत्तर के लिए धन्यवाद, यद्यपि।
पैल्टियर

1

थोड़ा सा हैक, लेकिन मुझे इसे रखने के लिए स्क्रीन का उपयोग करना पसंद है। मेरे पास वर्तमान में एक रिमोट फॉरवर्ड है जो हफ्तों से चल रहा है।

उदाहरण, स्थानीय रूप से शुरू:

screen
ssh -R ......

जब दूरस्थ आगे लागू होता है, और आपके पास दूरस्थ कंप्यूटर पर एक शेल होता है:

screen
Ctrl + a + d

अब आपके पास एक अबाधित रिमोट है। चाल दोनों छोर पर स्क्रीन को चलाने के लिए है


1

हाल ही में यह समस्या स्वयं हुई थी, क्योंकि इन समाधानों के लिए आपको पासवर्ड को हर बार फिर से दर्ज करने की आवश्यकता होती है यदि आप एक पासवर्ड लॉगिन का उपयोग करते हैं जो मैंने बैच फाइल में पासवर्ड से बचने के लिए टेक्स्ट प्रॉम्प्ट के साथ लूप में sshpass का उपयोग किया था।

सोचा था कि इस समस्या पर मैं अपना समाधान साझा करूंगा, अगर किसी के पास भी यही मुद्दा हो:

#!/bin/bash
read -s -p "Password: " pass
while true
do
    sshpass -p "$pass" ssh user@address -p port
    sleep 1
done

0

मुझे अपने पिछले ISP के साथ भी ऐसी ही समस्या हुई है। मेरे लिए यह किसी भी tcp कनेक्शन, वेबसाइटों पर जाने या मेल भेजने के साथ समान था।

समाधान UDP पर एक वीपीएन कनेक्शन को कॉन्फ़िगर करने के लिए था (मैं OpenVPN का उपयोग कर रहा था)। यह कनेक्शन और अधिक सहिष्णु था जो भी डिस्कनेक्ट का कारण बना। फिर आप इस कनेक्शन के माध्यम से किसी भी सेवा को चला सकते हैं।

कनेक्शन के साथ अभी भी समस्याएँ हो सकती हैं लेकिन चूंकि सुरंग अधिक सहिष्णु होगी, इसलिए किसी भी ssh सत्र को डिस्कनेक्ट होने के बजाय एक छोटा होल्डअप महसूस होगा।

ऐसा करने के लिए आपको ऑनलाइन वीपीएन सेवा की आवश्यकता होगी जिसे आप अपने सर्वर पर सेटअप कर सकते हैं।


0

जैसा कि autosshहमारी आवश्यकताओं को पूरा नहीं करता है (यह त्रुटि के साथ मौजूद है यदि यह पहले प्रयास में सर्वर से कनेक्ट नहीं हो सकता है), हमने एक शुद्ध बैश एप्लिकेशन लिखा है: https://github.com/aktos-io/link- साथ-सर्वर

यह डिफ़ॉल्ट रूप से सर्वर पर NODE के sshd पोर्ट (22) के लिए एक रिवर्स सुरंग बनाता है। यदि आपको कोई अन्य कार्य करने की आवश्यकता है (जैसे अतिरिक्त पोर्ट अग्रेषित करना, कनेक्शन पर मेल भेजना, आदि ...) तो आप अपनी स्क्रिप्ट on-connectऔर on-disconnectफ़ोल्डर्स रख सकते हैं।

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