ম্যাক ওএস এক্সে এসএসডি পোর্ট কীভাবে পরিবর্তন করবেন?


53

আমি sshdকোনও ম্যাক সার্ভারে কোন বন্দর ব্যবহার করে তা পরিবর্তন করতে চাই । উদাহরণস্বরূপ, চলুন পোর্ট 22 থেকে পোর্ট 32 পর্যন্ত বলি।

সম্পাদনা কাজ /etc/sshd_configকরে বলে মনে হচ্ছে না। কেউ কীভাবে এটি পরিবর্তন করতে জানে? আমি এমন একটি পদ্ধতি পছন্দ করবো যা সমস্ত ওএসএক্স সংস্করণের সাথে সামঞ্জস্যপূর্ণ (বা যতটা সম্ভব কমপক্ষে)।


আরও মনে রাখবেন যে /usr/libexec/sshd-keygen-wrapper(নীচে প্লিস্টগুলিতে দেখানো হয়েছে) নিজেই প্লাস্টে উল্লিখিত চেয়ে আলাদা এসএসএইচ শুরু করতে পারেন। আপনি যদি এটি বিড়াল, এটি সর্বদা শুরু হয় /usr/sbin/sshd

উত্তর:


61

পূর্ববর্তী প্রতিটি উত্তর কাজ করছে (গুগলের পরামর্শ অনুসারে) তবে এগুলি নোংরা এবং অযোগ্য

ম্যাক ওএস এক্স-এ লঞ্চ করা হ্যান্ডলড পরিষেবার জন্য শ্রবণ পোর্টটি পরিবর্তন করার সঠিক উপায় হ'ল পরিবর্তনের মধ্যে ডেডিকেটেড কীগুলি উপলব্ধ করা যায় to 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>

দ্রষ্টব্য: এল ক্যাপিটান, সিয়েরা এবং সম্ভবত ভবিষ্যতের সংস্করণগুলিতে এই ফাইলটি সম্পাদনা করতে সক্ষম হতে আপনাকে এসআইপি (সিস্টেম ইন্টিগ্রিটি প্রোটেকশন) অক্ষম করতে হবে। দেখুন আমি সিস্টেম ইন্টিগ্রিটি সুরক্ষা (SIP র) কীভাবে অক্ষম করতে পারি [...]

উপরের সম্পাদনাটি কেবলমাত্র আইপিভি 4-র শোনার জন্য এসএসএসডিকে বাধ্য করবে।

এতে কোনও পরিবর্তন করার পরে 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
@ ইয়ার লঞ্চড.প্লিস্ট ম্যানুয়ালটির নাম। পরিবর্তনটি / সিস্টেম / লাইব্রেরি / লঞ্চডেমোনস
মার্টিজন পিটারস

1
আমি নোট করেছি যে আপনি হয় মেশিনটি পুনরায় চালু করতে হবে, অথবা লঞ্চক্টেল দিয়ে ssh পরিষেবা পুনরায় চালু করতে হবে।
ড্যানি স্ট্যাপল

5
গ্রার ... ওএস এক্সের প্রতিটি আপগ্রেড (এই ক্ষেত্রে যোসাইমাইট) এই পরিবর্তনটিকে বাতিল করে দেয়, এটির সমাধানের জন্য আমি শেষ সময়টি কী করেছি এবং আমাকে এই তথ্যটি কোথায় পেয়েছি তা আমাকে স্মরণে রাখতে হবে। ঠিক করার জন্য ধন্যবাদ!
মাইকেল

2
@ হাসান আপনাকে দুটি এসএসএস দৃষ্টান্ত শুরু করতে হবে .. অর্থাত্ বিভিন্ন শ্রোকার পরিষেবা নাম এবং মান সহ আরও একটি শ্রোতা যুক্ত করুন
ডাঃ অ্যালবার্ট

5
লক্ষ্য করুন যে এল ক্যাপিটান সংস্করণে (এবং সম্ভবত ভবিষ্যতের সংস্করণগুলিতেও) ফাইলটি সম্পাদনা করার আগে আপনাকে এসআইপি (সিস্টেম ইন্টিগ্রিটি প্রোটেকশন) অক্ষম করতে হবে, দেখুন: আপেল.স্ট্যাকেক্সেঞ্জঞ্জ
/

17

আপনি যদি অতিরিক্ত পোর্টে sshd শুনতে চান তবে সকেট অভিধানে আপনি একাধিক এন্ট্রি যুক্ত করতে পারেন।

উদাহরণ:

<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
মাইক

বনজোর কীটির উদ্দেশ্য কী?

আমিও জানতে চাই, বনজোর কীটির উদ্দেশ্য কী?
ড্রয়


1
বনজোর কীটির উদ্দেশ্য: এই বনজ কীটি বনজুর সাবসিস্টেমের সাথে নিবন্ধিত হওয়ার জন্য অনুরোধ করতে ব্যবহার করা যেতে পারে। যেমন বলা হয়েছে man launchd.plist
স্কট উইলেকে

6

আমি এ পর্যন্ত যা পড়েছি (এবং অভিজ্ঞ) তা থেকে তিনটি প্রধান পদ্ধতি ব্যবহার করা যেতে পারে:

  1. ssh.plist ফাইলে সেটিংস পরিবর্তন করুন;
  2. / ইত্যাদি / পরিষেবা ফাইলে সেটিংস পরিবর্তন করুন;
  3. /etc/sshd.conf ফাইলে সেটিংস পরিবর্তন করুন।

এটি করার আরেকটি উপায়, যা আমি ব্যক্তিগতভাবে এই সমস্ত পদ্ধতির এবং সর্বোপরি পছন্দ করি, কারণ এটি ম্যাক ওএস এক্স সিস্টেম ফাইলগুলির সাথে গোলমাল করা এড়িয়ে চলে আপনি যে কোনও বন্দরটি 22 পোর্টে পুনর্নির্দেশের জন্য সকেট ব্যবহার করছেন।

  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. স্যাটট কল ( sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22) প্রেরণ করে সঠিক বিকল্পটি ব্যবহার করে আপনি চান যে কোনও বন্দরে 22 টি (ডিফল্ট ssh) পুনর্নির্দেশ করুন (নীচের উদাহরণে, 2222) সঠিক বিকল্পটি ব্যবহার করে

আপনি হয়ে গেছেন এবং আপনার ম্যাক ওএস এক্স সিস্টেম ফাইলগুলি অপরিবর্তিত রয়েছে। এছাড়াও, এই পদ্ধতিটি কেবল স্নো চিতাবাঘেই নয়, ম্যাক ওএস এক্সের সমস্ত সংস্করণে এবং এমন কোনও মেশিনেও কাজ করে যেখানে সকেট চলতে পারে।

আপনি যদি রাউটার / ফায়ারওয়াল ব্যবহার করেন তবে আপনার শেষ কাজটি হ'ল আপনার রাউটার / ফায়ারওয়ালে সঠিক পুনর্নির্দেশ কমান্ড অন্তর্ভুক্ত করা।

এছাড়াও, এটি ssh.plist পদ্ধতি, পরিষেবাদি পদ্ধতি বা যে কোনও পদ্ধতিই ভাল, আরও মার্জিত বা অন্যটির চেয়ে খারাপ কিনা তা নিয়ে বিতর্কে আটকা পড়ে avo

আপনি সহজেই কোনও স্ক্রিপ্ট প্রস্তুত করতে পারেন যা আপনি নিজের মেশিনটি পুনরায় চালু করার প্রত্যেকে পুনরায় পুনর্নির্মাণের জন্য শুরুতে চলে। এটি এ রাখুন /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এটি লোড করতে ব্যবহার করুন । এটি স্বয়ংক্রিয়ভাবে ভবিষ্যতের রিবুটগুলিতে লোড হবে।

এছাড়াও, আপনি (i) লুপব্যাক (127.0.0.1) ব্যতীত অন্য কোনও ইন্টারফেস থেকে আপনার পোর্ট 22 এ যে কোনও সংযোগ ব্লক করতে আপনার ফায়ারওয়াল সেট করে এবং (ii) আপনার sshd.conf ফাইলে অনুরূপ পরিবর্তন করে সুরক্ষাও উন্নত করতে পারেন can ssh শুধুমাত্র লুপব্যাক শুনুন।

উপভোগ করুন।


2
/etc/servicesফাইলটি সম্পাদনা করা একটি খারাপ ধারণা - এটি আপনার গিথুব বা বিটবকেট অ্যাকাউন্টগুলিতে এসএসএইচ কী লগইনের মতো জিনিসগুলিকে প্রভাবিত করবে, যা নতুন বন্দরের সাথে সংযোগ স্থাপনের চেষ্টা করবে এবং ব্যর্থ হবে।
সিসিপিজ্জা

1
আপনার একটি স্ক্র্যাচ ডিরেক্টরি তৈরি করা উচিত। তারপরে sudoইনস্টল করতে ব্যবহার করুন। আপনার উন্নত সুবিধাগুলি দিয়ে তৈরি করা উচিত নয়।

এটি এল ক্যাপিটেনেও কাজ করে যেখানে এসআইপি / সিস্টেমে / লাইব্রেরি / লঞ্চডেমোনস / এসএস.পি লিস্টকে পরিবর্তন করা শক্ত করে তোলে। তবে, এল ক্যাপিটেনে "নেটওয়ার্কস্টেট" কী অবমূল্যায়ন করা হয়েছে; আমার পরামর্শ <key>KeepAlive</key><true/>
আরটিএস - মনিকা সেলিও

সর্বশেষ OSX Sierra সঙ্গে, কাজ সংস্করণ হল: gist.github.com/shanmuha/d97e9f1abdaf1c9b804f748f332a3ffd
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 আমি অন্য শ্রোতাদের কাছ থেকে একসাথে এটি পাইক করার সময় থেকে এটি একটি অনুলিপি-পেস্ট ত্রুটি বলে মনে করি।
অ্যাডাম প্রেসকোট

আমিও জানতে চাই, বনজোর কীটির উদ্দেশ্য কী?
ড্রয়

1
বনজোর কীটির উদ্দেশ্য: এই বনজ কীটি বনজুর সাবসিস্টেমের সাথে নিবন্ধিত হওয়ার জন্য অনুরোধ করতে ব্যবহার করা যেতে পারে। যেমন বলা হয়েছে man launchd.plist
স্কট উইলেকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.