मैक ओएस एक्स पर sshd पोर्ट कैसे बदलें?


53

मैं बदलना चाहता हूं कि sshdमैक सर्वर पर कौन सा पोर्ट उपयोग करता है। उदाहरण के लिए, मान लें कि पोर्ट 22 से पोर्ट 32 तक है।

संपादन से /etc/sshd_configकाम नहीं लगता है। क्या कोई इसे बदलना जानता है? मैं एक ऐसी विधि पसंद करूँगा जो सभी OSX संस्करणों (या यथासंभव कम से कम) के साथ संगत हो।


यह भी ध्यान दें कि /usr/libexec/sshd-keygen-wrapper(नीचे दिए गए प्लास्ट्स में दिखाया गया है) प्लिस्ट में ही निर्दिष्ट की तुलना में एक अलग एसएसएच शुरू कर सकता है। यदि आप इसे बिल्ली करते हैं, तो यह हमेशा शुरू होता है /usr/sbin/sshd

जवाबों:


61

हर पिछला उत्तर काम कर रहा है (जैसा कि Google सुझाव भी देता है), लेकिन वे गंदे और असहाय हैं

मैक ओएस एक्स पर एक लॉन्च की गई सेवा के लिए श्रवण पोर्ट को बदलने का सही तरीका यह है कि परिवर्तनों को समर्पित कुंजियों को उपलब्ध कराया जाए ssh.plist

तो समाधान उतना ही सरल है जितना कि सेवा नाम के बजाय पोर्ट नंबर का उपयोग करना।

मेरे संपादित अंश /System/Library/LaunchDaemons/ssh.plist:

    <key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>22022</string>
                    <key>SockFamily</key>
                    <string>IPv4</string>
                    <key>Bonjour</key>
                    <array>
                            <string>22022</string>
                    </array>
            </dict>
    </dict>

नोट: एल Capitan, सिएरा और शायद भविष्य के संस्करणों पर इस फ़ाइल को संपादित करने में सक्षम होने के लिए, आपको SIP (सिस्टम इंटीग्रिटी प्रोटेक्शन) को अक्षम करने की आवश्यकता है। देखें कि मैं सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) को कैसे अक्षम करता हूं [...]

उपरोक्त संपादन भी केवल IPV4 को सुनने के लिए sshd को बाध्य करेगा।

ssh.plistनिम्न में कोई भी परिवर्तन करने के बाद , फ़ाइल को इस प्रकार पुनः लोड किया जाना चाहिए:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

ध्यान दें कि इस फ़ाइल का उपयोग launchctl stop ...और launchctl start ...पुनः लोड नहीं किया जाएगा।

अधिक जानकारी वाला मैन पेज इस लिंक को टाइप करके man launchd.plistया इस्तेमाल करके पाया जा सकता है ।


3
@Yar launchd.plist मैनुअल का नाम है। परिवर्तन ssh.plist फ़ाइल में / System / Library / LaunchDaemons में है
Martijn Pieters

1
मैं ध्यान देता हूं कि आपको या तो मशीन को पुनरारंभ करने की आवश्यकता है, या लॉन्च के साथ ssh सेवा को पुनरारंभ करना है।
डैनी स्टेपल

5
Grr ... OS X का हर अपग्रेड (इस मामले में योसेमाइट) इस बदलाव को छोड़ देता है, जिससे मुझे याद रखने की जरूरत है कि मैंने इसे ठीक करने के लिए आखिरी बार क्या किया था, और मुझे यह जानकारी कहां से मिली। ठीक करने के लिए धन्यवाद!
माइकल

2
@ हसन आपको दो एसएचएस इंस्टेंसेस शुरू करने हैं .. अर्थात एक और श्रोता को अलग SockServiceName नाम और मान के साथ जोड़ें
drAlberT

5
ध्यान दें कि एल कैपिटन संस्करण पर (और संभवतः भविष्य के संस्करणों में भी) आपको फ़ाइल को संपादित करने से पहले एसआईपी (सिस्टम इंटीग्रिटी प्रोटेक्शन) को अक्षम करने की आवश्यकता है, देखें: apple.stackexchange.com/a/208481
jcfci

17

यदि आप अतिरिक्त पोर्ट पर सुनना चाहते हैं, तो आप सॉकेट शब्दकोश में कई प्रविष्टियाँ जोड़ सकते हैं।

उदाहरण:

<key>Sockets</key>
<dict>
        <key>Listeners</key>
        <dict>
                <key>SockServiceName</key>
                <string>ssh</string>
                <key>Bonjour</key>
                <array>
                        <string>ssh</string>
                        <string>sftp-ssh</string>
                </array>
        </dict>
        <key>Listeners2</key>
        <dict>
                <key>SockServiceName</key>
                <string>22022</string>
        </dict>
</dict>

1
स्पष्टता के लिए, @ राम का उल्लेख है:/System/Library/LaunchDaemons/ssh.plist
माइक काउसर

बोनजॉर कुंजी का उद्देश्य क्या है?

मुझे यह भी जानना अच्छा लगेगा कि बोंजौर कुंजी का उद्देश्य क्या है?
आकर्षित किया

20022 क्या है?
जेमी हटबर

1
बोनजॉर कुंजी का उद्देश्य: इस वैकल्पिक कुंजी का उपयोग यह अनुरोध करने के लिए किया जा सकता है कि सेवा को बोनजोर सबसिस्टम के साथ पंजीकृत होना चाहिए। के द्वारा बताया गया man launchd.plist
स्कॉट विलेक

6

अब तक जो मैंने पढ़ा (और अनुभव किया), उसमें तीन मुख्य विधियाँ हैं जिनका उपयोग किया जा सकता है:

  1. ssh.plist फ़ाइल में सेटिंग बदलें;
  2. / etc / सेवाओं फ़ाइल में सेटिंग बदलें;
  3. /etc/sshd.conf फ़ाइल में सेटिंग बदलें।

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

  1. समाज डाउनलोड करें: http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
  2. Tar.gz फ़ाइल को अपने / usr / स्थानीय / निर्देशिका में स्थानांतरित करें ( sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz)
  3. अपने / usr / स्थानीय / बिन निर्देशिका ( cd /usr/local/bin) पर जाएं
  4. को विस्तारित: sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. असंपीड़ित फ़ाइल निर्देशिका में जाएँ: cd ./socat-1.7.3.2
  6. सामान्य कॉन्फ़िगरेशन चलाएं, सोसाइट स्थापित करने के लिए बनाएं और स्थापित करें ( sudo ./configure && sudo make && sudo make install)
  7. पोर्ट 22 (डिफ़ॉल्ट ssh) को आप चाहते हैं कि किसी भी पोर्ट पर (निम्नलिखित पूर्व में। 2222) सोशट कॉल भेजकर सही विकल्प का उपयोग करें ( sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22)

आप कर रहे हैं और अपने मैक ओएस एक्स सिस्टम फ़ाइलों को अपरिवर्तित छोड़ दिया जाता है। इसके अलावा, यह विधि न केवल स्नो लेपर्ड पर काम करती है, बल्कि मैक ओएस एक्स के सभी संस्करणों पर और किसी भी मशीन पर, जिस पर सोसाइटी चल सकती है।

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

इसके अलावा, यह बहस में फंसने से बचा जाता है कि क्या ssh.plist पद्धति, सेवाओं का तरीका या जो भी विधि अन्य की तुलना में बेहतर, अधिक सुरुचिपूर्ण या बदतर है।

आप आसानी से एक स्क्रिप्ट तैयार कर सकते हैं, जो आपके द्वारा पुनः आरंभ की गई सोसाइटी रिडायरेक्शन को फिर से बनाने के लिए शुरू होती है। इसे इसमें रखें /Library/LaunchDaemons/com.serverfault.sshdredirect.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.serverfault.sshdredirect</string>
    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/socat</string>
        <string>TCP-LISTEN:2222,reuseaddr,fork</string>
        <string>TCP:localhost:22</string>
    </array>
</dict>
</plist>

sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plistइसे लोड करने के लिए उपयोग करें । यह भविष्य के रिबूट पर स्वचालित रूप से लोड होगा।

इसके अलावा, आप लूपबैक (127.0.0.1) और (ii) अपने sshd.conf फ़ाइल में एक समान परिवर्तन करने से किसी भी अन्य इंटरफ़ेस से अपने पोर्ट 22 के किसी भी कनेक्शन को ब्लॉक करने के लिए (i) अपने फ़ायरवॉल को सेट करके सुरक्षा में सुधार कर सकते हैं। केवल लूपबैक पर ssh सुनो।

का आनंद लें।


2
/etc/servicesफ़ाइल को संपादित करना एक बुरा विचार है - यह SSH कुंजी लॉगिन जैसी चीजों को आपके github या bitbucket खातों पर प्रभावित करेगा, जो नए पोर्ट से कनेक्ट होना और विफल होना चाहते हैं।
ccpizza

1
आपको एक स्क्रैच डायरेक्टरी में निर्माण करना चाहिए। फिर sudoइंस्टॉल करने के लिए उपयोग करें। आपको उन्नत विशेषाधिकार के साथ निर्माण नहीं करना चाहिए।

यह El Capitan पर भी काम करता है, जहां SIP बदलती /System/Library/LaunchDaemons/ssh.nist को कठिन बनाता है। लेकिन, एल Capitan पर "NetworkState" कुंजी को हटा दिया गया है; मैं सुझाव देता हूं <key>KeepAlive</key><true/>
RTS -

नवीनतम ऑक्स
Shanmu

1

मैं इस दस्तावेज़ को एक आदमी पृष्ठ में कहीं भी ठीक से नहीं देख सका, लेकिन यदि आप अतिरिक्त श्रोता को जोड़ने के अलावा और कुछ नहीं करना चाहते हैं, तो आप श्रोताओं की एक सरणी का उपयोग कर सकते हैं और एक अतिरिक्त श्रुतलेख रख सकते हैं। यदि आप सीधे पोर्ट का उपयोग करते हैं (लेकिन अपने फ़ायरवॉल पर पोर्ट को खोलना याद है!)

    <key>Listeners</key>
    <array>
    <dict>
        <key>Bonjour</key>
        <array>
            <string>ssh</string>
            <string>sftp-ssh</string>
        </array>
        <key>SockServiceName</key>
        <string>ssh</string>
    </dict>
    <dict>
        <key>SockServiceName</key>
        <string>22222</string>
    </dict>
    </array>

1
बोनजॉर कुंजी का उद्देश्य क्या है?

@jww मुझे लगता है कि जब मैं अन्य श्रोताओं से एक साथ इस piecing था से एक कॉपी-पेस्ट त्रुटि है।
एडम प्रेस्कोट

मुझे यह भी जानना अच्छा लगेगा कि बोंजौर कुंजी का उद्देश्य क्या है?
आकर्षित किया

1
बोनजॉर कुंजी का उद्देश्य: इस वैकल्पिक कुंजी का उपयोग यह अनुरोध करने के लिए किया जा सकता है कि सेवा को बोनजोर सबसिस्टम के साथ पंजीकृत होना चाहिए। के द्वारा बताया गया man launchd.plist
स्कॉट विलेके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.