22 से अधिक पोर्ट पर एसएसएच कैसे करें


150

मेरे पास एक ही राउटर के पीछे दो कंप्यूटर हैं। चलो उन्हें ए और बी कहते हैं।

निम्नलिखित तरीके से A, B से SSH कर सकता है: ssh usr@<internal ip of computer>

B एक ही करके SSH से A कर सकते हैं, लेकिन बाहरी IP का उपयोग करना होगा। मैंने अपने राउटर के पोर्ट 22 को कंप्यूटर ए के आईपी में भेज दिया है, ताकि सभी मेरे लिए समझ में आए।

हालाँकि, मैं कंप्यूटर के लिए पोर्ट 26 को भी फॉरवर्ड करना चाहता हूं, और दोनों के लिए बाहरी आईपी का उपयोग करके नेटवर्क के बाहर से एसएसएच, लेकिन पोर्ट 22 या 26 को निर्दिष्ट करके, प्रभावी रूप से किस कंप्यूटर का उपयोग करना है, यह निर्दिष्ट करना है।

मैंने iptablesA के B और OPPUT के माध्यम से पोर्ट 26 को अनुमति देने की कोशिश की है , लेकिन यह काम नहीं कर पाया। मैंने पोर्ट 26 को बी के आंतरिक आईपी (राउटर के माध्यम से) को भी अग्रेषित किया है, जैसा कि मैंने ए के लिए 22 के साथ किया था।

बाहरी आईपी और पोर्ट 26 का उपयोग करते हुए ए से बी तक एसएसएच करने की कोशिश करने पर मुझे यहां क्या मिलता है:

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

संस्करण:

  • A = OpenSSH_5.9p1 डेबियन-5ubuntu1, OpenSSL 1.0.1 14 मार्च 2012
  • बी = ओपनएसएसएच_6.0 पी 1 डेबियन -4, ओपनएसएसएल 1.0.1c 10 मई 2012

A में 12.04 Ubuntu है, B रास्पबेरी के साथ एक रास्पबेरी पाई है।

संपादित करें: कुछ ऐसा जिसे मैं रखना भूल गया: मैंने SSH कॉन्फिग फ़ाइल को स्विच करने का प्रयास किया (मुझे पता चला कि /etc/ssh/ssh_config) मैंने #लाइन को Portबदल दिया और बदल दिया 22गया 26। इसने मुझे कनेक्शन देने से अभी भी इनकार कर दिया। (मैंने बिना किसी लाभ के रिबूट किया।)


क्या युउ ओवेवे एसएसएच पोर्ट 22 या 26 पर दूसरी मशीन पर चल रहा है?
Nerdfest

1
ध्यान दें कि / etc / ssh / ssh_config ssh क्लाइंट कॉन्फिगर है। जहाँ / / ssh / sshd_config ssh डेमन कॉन्फिग है।
स्टेकुन्डेर्सकोर

जवाबों:


45

ऐसा लगता है कि आप दूसरी मशीन पर पोर्ट 26 पर एसएसएच नहीं चला रहे हैं। आप या तो उस मशीन पर पोर्ट संख्या को 26 में बदल सकते हैं।

या तो संपादित करें /etc/ssh/sshd_configऔर 22 को पुनः आरंभ करना न भूलें या इसे 22 पर छोड़ दें, लेकिन राउटर पर पोर्ट 26 को दूसरी मशीन पर पोर्ट 22 पर अग्रेषित करें। इसके अलावा, कनेक्शन के माध्यम से अनुमति देने के लिए दूसरी मशीन पर किसी भी फ़ायरवॉल सेटिंग्स को बदलना न भूलें।


आह ... तो sshd_config बदलना चाहिए, ssh_config नहीं?
गैरी

2
सही बात। sshd सेवा है (डी डेमन के लिए है)। कॉन्फिग फ़ाइल (sudo gedit के साथ) संपादित करें, फिर "sudo service ssh पुनरारंभ" के साथ सेवा को पुनरारंभ करें।
Nerdfest

2
समस्या का हल किया। किसी भी फ़ायरवॉल सेटिंग्स को बदलना नहीं था।
गैरी

370

यदि आप लिनक्स सिस्टम पर हैं और आप पोर्ट 26 पर एक एसएसएच सर्वर से कनेक्ट करना चाहते हैं तो आप निम्न कमांड का उपयोग कर सकते हैं।

ssh user@192.168.1.1 -p 26

ध्यान दें:

  1. सर्वर आईपी को अपने सर्वर के आईपी पते या डीएनएस नाम से बदलें।
  2. अपना पोर्ट नंबर बदलें जैसा आपने सेट किया है।
  3. यदि आप कस्टम पोर्ट SSH का उपयोग कर रहे हैं तो उसी पोर्ट को आउटबाउंड के लिए सबसे अधिक अनुमति दी जाती है, फ़ायरवॉल पर इनबाउंड कनेक्शन अन्यथा कनेक्शन स्थापित नहीं होगा

17
यह एक सही के रूप में चिह्नित किया जाना चाहिए।
ken_oy

1
मैं मानता हूं कि यह सही उत्तर है। यह एक सरल है और इस बिंदु पर जाता है।
m4l490n

1
@gary इसको सही
दुःख

7
नहीं, यह सही उत्तर नहीं है। ओपी को डेमॉन से वांछित पोर्ट पर नहीं सुनने की परेशानी थी। उन्होंने स्पष्ट रूप से SSH सर्वर और / या NAT विन्यास के साथ मदद मांगी, लेकिन वर्तमान उत्तर मूल पोस्ट को नजरअंदाज करता है और क्लाइंट कमांड विकल्प का वर्णन करता है जो पहले से ही ओपी के लिए जाना जाता है। मुझे आश्चर्य है कि इस उत्तर को कितने उत्थान मिले।
nnovich-OK

2
यह बहुमत के लिए सही है, लेकिन यह ओपी की समस्या के लिए सही नहीं है।
Ultrasonic54321

9

मैं केवल इंट्रानेट ssh एक्सेस के लिए पोर्ट 22 का उपयोग करता हूं।

इंटरनेट के माध्यम से पहुंच के लिए मैं एक कस्टम (असामान्य) पोर्ट का उपयोग करता हूं। इसका लाभ मुझे स्क्रिप्ट के बच्चों द्वारा उत्पन्न भार को कम करने में है जो "प्रसिद्ध उपयोगकर्ता नाम" के लिए पोर्ट 22 को स्कैन कर रहे हैं।

बाहरी sshd प्रक्रियाओं के द्वारा नियंत्रित कर रहे हैं xinetdऔर करने के लिए समानांतर में चल रहे आंतरिक sshd प्रक्रिया। निम्नलिखित उदाहरण में मैं पोर्ट 12345 का उपयोग करता हूं:

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

xinetdविन्यास है:

service ssh-external
{
    socket_type = stream
    wait = no
    protocol = tcp
    type = UNLISTED
    user = root
    server = /usr/sbin/sshd
    server_args = -i -f  /etc/ssh/external-sshd.config
    port = 12345
    log_on_failure += USERID
}

फ़ाइल /etc/ssh/external-ssdh.configआपके सामान्य sshdकॉन्फ़िगरेशन की एक प्रति हो सकती है । सुनिश्चित करें कि निम्नलिखित कथन कॉन्फ़िगर किए गए हैं:

Port 12345
AddressFamily inet

मैं सार्वजनिक कुंजी प्रमाणीकरण लागू करने और इंटरनेट एक्सेस के लिए पासवर्ड प्रमाणीकरण अक्षम करने का सुझाव देता हूं:

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

7

सुनो बंदरगाहों भी आईपी पते से जुड़ा हो सकता है

/ Etc / ssh / sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444

यह एक टिप्पणी होना चाहिए एक जवाब नहीं।
पाब्लो पाज़ोस

1

जैसा कि मैंने संबंधित उत्तर में बताया है , ssh क्लाइंट यूआरआई प्रारूप को निर्दिष्ट करने की अनुमति देता है ssh://user@host:1234। उदाहरण के लिए:

ssh  ssh://myuser@mydomain.com:2222

जहां 2222 पोर्ट नंबर है। पोर्ट नंबर को सब्स्टीट्यूट करें जिसे आप इसके बजाय उपयोग करना चाहते हैं। बेशक, याद रखें कि निर्दिष्ट पोर्ट ssh सर्वर से कनेक्ट करने के लिए (जिस होस्ट से आप कनेक्ट करने का प्रयास कर रहे हैं) को पहले निर्दिष्ट पोर्ट पर सुनना होगा


0

डिफ़ॉल्ट पोर्ट (टीसीपी / 22) पर ssh चलाने के लिए एक अच्छा विचार नहीं है, न ही WAN IP 22 से जो भी पोर्ट LAN IP पर ssh- सर्वर का उपयोग कर रहा है, आगे है।

Ssh-server सेवा से कनेक्ट करने के लिए एक अधिक सामान्य अर्थ में उस पोर्ट पर सुनना चाहिए। आपको करना होगा

  1. पर संपादित करें /etc/ssh/sshd_config( ध्यान दें से) #Port 22करने के लिए Port 26। यानी, पोर्ट को असिंचित करना और बदलना। शायद 26 से बेहतर कुछ बेतरतीब ढंग से ऊपर होगा , जैसे 42895।
  2. Ssh- सर्वर सेवा को पुनरारंभ करें

    sudo systemctl restart sshd.service
    

तब ssh-client से आप कनेक्ट कर पाएंगे

ssh user@serverNameOrIP -p 42895

बोनस: mosh

यदि mosh पैकेज आप सर्वर पर स्थापित है तो उपयोग करें

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