হাই সিয়েরায় এসএস পোর্ট পরিবর্তন করা যায় না


8

বিষয় হিসাবে: আমি ssh.plist ফাইলটি সম্পাদনা করতে পারি না যা / সিস্টেম / লাইব্রেরি / লঞ্চডেমনে অবস্থিত। আমি sshd বন্দর পরিবর্তন করতে চান।

আমি অনুসন্ধানকারীর মধ্যে 'তথ্য' ব্যবহার এবং এটি আনলক করার চেষ্টা করেছি। এটি কাজ করে না। আমি চেষ্টা করেছিলাম:

মূল হিসাবে, আমি চেষ্টা করেছিলাম ..

macos:LaunchDaemons root# pwd && chown $USER ssh.plist 
/System/Library/LaunchDaemons
chown: ssh.plist: Operation not permitted

আমি ফাইলটি আমার নিজস্ব ডেস্কটপে সিপি করার চেষ্টা করেছি, এটি সিটুতে সম্পাদনা করে আবার সিপি করার চেষ্টা করেছি।

macos:LaunchDaemons root# pwd && cp /Users/darren/Desktop/ssh.plist .
/System/Library/LaunchDaemons
cp: ./ssh.plist: Operation not permitted

আমি এটি আগে করেছি - কিছুক্ষণ আগে। আমি মনে করি এটি সিয়েরার আগে সম্ভবত ছিল তবে আমি এই প্রকাশের 'কোড নাম' মনে করতে পারি না।

অ্যাপল কি এই ফাইলটিকে অবশ্যই লক করে রেখেছে?

উত্তর:


18

অ্যাপল কি এই ফাইলটিকে [ /System/Library/LaunchDaemons/ssh.plist] অবশ্যই লক করেছে ?

হ্যাঁ, তাদের রয়েছে, আপনাকে এসআইপি ( সিস্টেম ইন্টিগ্রিটি প্রোটেকশন ) অক্ষম করতে হবে , তবে মনে রাখবেন যে ssh.plistএসএসএইচ সার্ভার পোর্টটি পরিবর্তন করার জন্য সম্পাদনাটি একমাত্র বিকল্প নয়, একই ফলাফল অর্জনের অন্যান্য উপায় রয়েছে।

পোর্টটি পরিবর্তন করার জন্য এখানে কমপক্ষে 4 টি উপায় sshdরয়েছে :

  1. সংশোধন করা হচ্ছে /System/Library/LaunchDaemons/ssh.plist:

    • পেশাদাররা : কনফিগার করার সবচেয়ে সহজ উপায় sshd, sshdসিস্টেম পছন্দগুলি দিয়ে শুরু করে> ভাগ করে নেওয়া> রিমোট লগইন নতুন পোর্টে শোনে।

    • কনস (কনসোলিউটড সেটআপ) (দুটি পুনঃসূচনা এবং এসআইপি নিষ্ক্রিয় করা / পুনরায় সক্ষম করা দরকার ) Cons

    • ব্যবহারের ক্ষেত্রে : sshdবন্দরটির চূড়ান্ত পরিবর্তন

  2. একটি নতুন প্লিস্ট তৈরি করা হচ্ছে /Library/LaunchDaemons/ssh2.plist:

    • পেশাদাররা : sshdস্ট্যান্ডার্ড এবং নতুন বন্দরে দ্বৈত অপারেশন ।

    • কনস : sshdনতুন বন্দরে শুরু করার জন্য কেবলমাত্র সিএলআই পদ্ধতি ।

    • ব্যবহারের ক্ষেত্রে : sshdস্ট্যান্ডার্ড পোর্ট এবং অতিরিক্ত পোর্ট উভয়ই শুনতে হবে।

  3. "Ssh" এন্ট্রিগুলিতে এতে পরিবর্তন করা হচ্ছে /etc/services:

    • পেশাদাররা : সহজ পদ্ধতি, এসআইপি মোকাবেলা করার প্রয়োজন নেই, sshdসিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইন নতুন পোর্টে শোনে started

    • কনস : পার্শ্ব প্রতিক্রিয়া: sshরিমোট সার্ভারের সাথে সংযোগ করার সময় নতুন পোর্টের ডিফল্ট (তার জন্য কার্যকারিতা নেই)।

    • কেস ব্যবহার করুন : অস্থায়ী বন্দর পরিবর্তন বা sshdভিন্ন বন্দরে চলমান পরীক্ষা করা ।

  4. প্যাকেট ফিল্টার সহ 22 বন্দরে নতুন বন্দরে পুনর্নির্দেশ করা হচ্ছে:

    • পেশাদাররা : এসআইপি নিয়ে কাজ করার দরকার নেই, sshdসিস্টেম পছন্দগুলি দিয়ে শুরু করে> ভাগ করে নেওয়া> রিমোট লগইন নতুন বন্দরে শোনা যাচ্ছে বলে মনে হয়।

    • কনস কিছুটা অ স্বচ্ছ (: sshdকনফিগারেশন অস্পৃষ্ট কিন্তু sshd((env ভেরিয়েবল মাধ্যমে দূরবর্তী ক্লায়েন্ট এটা মনে করে বন্দর 22 এর সাথে সংযুক্ত হচ্ছে অন্য শোনে / অতিরিক্ত বন্দর) (সিস্টেম পছন্দসমূহ নির্ভরযোগ্য নয় ফায়ারওয়ালের অবস্থা) এবং বিভ্রান্তিকর, অতি ক্ষুদ্র পার্শ্ব প্রতিক্রিয়া SSH_CLIENTএবং SSH_CONNECTION)) ।

    • ব্যবহারের কেস : sshdবন্দরটির সুনির্দিষ্ট বা অস্থায়ী পরিবর্তন , sshdমানক বন্দর এবং অতিরিক্ত বন্দরের উভয়ই শুনতে হবে।

আসুন তাদের ঘনিষ্ঠভাবে তাকান। (নতুন বন্দরটি নির্বাচন করার সময়, এটি চালিয়ে গিয়ে অন্য কোনও পরিষেবা ব্যবহার না করে তা নিশ্চিত করুন sudo lsof -i -n -P | grep <your port>))


1. পরিবর্তন করা হচ্ছে /System/Library/LaunchDaemons/ssh.plist

এটিই আপনি চেষ্টা করেছেন এমন পদ্ধতি, এখানে এটি সম্পূর্ণ করার জন্য বর্ণনা করতে দিন:

  1. আপনার ম্যাকটি Rপুনরায় চালু করুন এবং ম্যাকোস পুনরুদ্ধারে প্রবেশের জন্য আপনার ম্যাকটি পুনরায় আরম্ভ শুরু করার সাথে সাথেই ধরে রাখুন ।
  2. মেনু বার থেকে ইউটিলিটিস> টার্মিনাল নির্বাচন করুন।
  3. csrutil disableএসআইপি অক্ষম করতে টাইপ করুন ।
  4. অ্যাপল মেনু> পুনঃসূচনা নির্বাচন করুন।
  5. লগ ইন, সম্পাদনা /System/Library/LaunchDaemons/ssh.plistএবং শ্রোতাদের বিভাগটি সংশোধন করুন। উদাহরণস্বরূপ, বন্দরটি এতে পরিবর্তন করতে 2222:

    এখানে চিত্র বর্ণনা লিখুন

  6. আপনার ম্যাকটি Rপুনরায় চালু করুন এবং ম্যাকোস পুনরুদ্ধারে প্রবেশের জন্য আপনার ম্যাকটি পুনরায় আরম্ভ শুরু করার সাথে সাথেই ধরে রাখুন ।

  7. মেনু বার থেকে ইউটিলিটিস> টার্মিনাল নির্বাচন করুন।
  8. csrutil enableএসআইপি সক্ষম করতে টাইপ করুন এবং পুনঃসূচনা করুন।

এসএসএইচ সার্ভার এখন নতুন বন্দরে শুনবে এবং আপনি sshdসিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইনের মাধ্যমে যথারীতি শুরু করতে পারেন ।


2. একটি নতুন plist তৈরি করা /System/Library/LaunchDaemons/ssh2.plist

এই পদ্ধতিটি উত্তরে এই উত্তরে বর্ণিত হয়েছে , যা মূলত বলে:

  1. একটি নতুন স্টার্টআপ স্ক্রিপ্ট তৈরি /System/Library/LaunchDaemons/ssh.plistকরতে অনুলিপি করুন ।/Library/LaunchDaemons/ssh2.plistsshd
  2. /Library/LaunchDaemons/ssh2.plistবিল্ট-ইন থেকে নতুন স্টার্টআপ স্ক্রিপ্টকে আলাদা করতে লেবেলটি সংশোধন করুন , উদাহরণস্বরূপ একটি নম্বর "2" যুক্ত করে:

    <key>Label</key>
    <string>com.openssh.sshd2</string>
    
  3. পূর্ববর্তী পদ্ধতির মতো শ্রোতাদের বিভাগে বন্দরটি পরিবর্তন করুন। উদাহরণস্বরূপ, বন্দরটি 2222 এ পরিবর্তন করতে:

    <key>Sockets</key>
    <dict>
       <key>Listeners</key>
       <dict>
          <key>SockServiceName</key>
          <string>2222</string>
          <key>Bonjour</key>
          <array>
              <string>ssh</string>
              <string>sftp-ssh</string>
          </array>
       </dict>
    </dict>
    
  4. sshdনতুন বন্দরে শুরু করুন:

    sudounchctl লোড -w / লাইব্রেরি / লঞ্চডেমোনস / এসএস 2.plist

    (এটি থামাতে, চালান sudo launchctl unload /Library/LaunchDaemons/ssh2.plist)

এসএসএইচ সার্ভারটি এখন নতুন বন্দরে শুনবে। আপনি এখনও স্ট্যান্ডার্ড পোর্ট (22 ​​/ টিসিপি) শোনার এসএসএইচ সার্ভারের আরেকটি উদাহরণ শুরু করতে সিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইন ব্যবহার করতে পারেনlaunchdউভয় বন্দরে শুনবে:

$ sudo lsof -i -P -n
launchd     1           root   42u  IPv6 0x9df385961b132cdf      0t0    TCP *:2222 (LISTEN)
launchd     1           root   44u  IPv4 0x9df385961c81db1f      0t0    TCP *:2222 (LISTEN)
launchd     1           root   45u  IPv6 0x9df385961b132cdf      0t0    TCP *:2222 (LISTEN)
launchd     1           root   47u  IPv4 0x9df385961c81db1f      0t0    TCP *:2222 (LISTEN)
launchd     1           root   48u  IPv6 0x9df385961b133e1f      0t0    TCP *:22 (LISTEN)
launchd     1           root   49u  IPv4 0x9df385961b22d51f      0t0    TCP *:22 (LISTEN)
launchd     1           root   50u  IPv6 0x9df385961b133e1f      0t0    TCP *:22 (LISTEN)
launchd     1           root   51u  IPv4 0x9df385961b22d51f      0t0    TCP *:22 (LISTEN)

3. "ssh" এন্ট্রিগুলিতে পরিবর্তন করা /etc/services

sshdএই পদ্ধতিতে বন্দরটি পরিবর্তন করতে , নিম্নলিখিত হিসাবে এগিয়ে যান:

  1. সম্পাদনা করুন /etc/services, এই এন্ট্রিগুলি দেখুন:

    ssh  22/udp  # SSH Remote Login Protocol
    ssh  22/tcp  # SSH Remote Login Protocol
    

    এবং 22 আপনার পছন্দসই একটি পোর্ট সঙ্গে পোর্ট প্রতিস্থাপন।

আপনি সিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইন সহ এসএসএইচ সক্ষম করতে পারেন এবং sshdনতুন বন্দরে শুনবেন।

কেন এই কাজ করে? আপনি যদি /System/Library/LaunchDaemons/ssh.plistফাইলটির শ্রোতাদের বিভাগটি একবার দেখে থাকেন তবে দেখতে পাবেন যে এটিতে sshsshd নামক পরিষেবাটিতে অর্পিত বন্দরে শুনতে কনফিগার করা হয়েছে :/etc/services

<key>Sockets</key>
<dict>
    <key>Listeners</key>
    <dict>
        <key>SockServiceName</key>
        <string>ssh</string>
(...)
</dict>

এটি নিঃসন্দেহে সহজতম পদ্ধতি, তবে এর একটি অপূর্ণতা রয়েছে: এসএসএইচ ক্লায়েন্ট আশা করবে রিমোট এসএসএইচ সার্ভারগুলি নতুন বন্দরে (পোর্ট 22 এর পরিবর্তে) শুনতে পাবে ( ইঙ্গিতটির জন্য জ্যাকারনকে ধন্যবাদ )। এটি হ'ল ডিফল্ট এসএসএইচ পোর্টটি কোনটি তা খুঁজে বের করার জন্য sshপড়ে /etc/services

সৌভাগ্যবশত সেখানে একটা হল সহজ সমাধান uncomment: এই জন্য Port 22যে /etc/ssh/ssh_config(দেখুন man ssh_configআরও তথ্যের জন্য)।


৪. প্যাকেট ফিল্টার সহ নতুন বন্দরে পোর্ট ২২ পুনঃনির্দেশ করা হচ্ছে

পদ্ধতিটি ম্যাকস প্যাকেট ফিল্টার (পিএফ) ব্যবহার করে 22 বন্দরে প্রাপ্ত সমস্ত অনুরোধগুলি নতুন sshdবন্দরে পুনর্নির্দেশ করতে ( ধারণাটির জন্য অ্যান্ড্রু মর্টনকে ধন্যবাদ ):

  1. /etc/pf.anchors/sshdবিষয়বস্তু সহ একটি নতুন অ্যাঙ্কর ফাইল তৈরি করুন ( 2222আপনার পছন্দের কোনও বন্দর দিয়ে প্রতিস্থাপন করুন):

    rdr pass inet proto tcp from any to any port = 2222 -> 127.0.0.1 port 22
    # If you want `sshd` to listen on port 22 too, comment out the line below
    block drop in quick proto tcp from any to any port = 22
    
  2. সম্পাদনা করে "sshd" অ্যাঙ্কর বিধি যুক্ত করুন /etc/pf.conf( ক্রমটি প্রাসঙ্গিক!):

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    # Load sshd redirect rule
    rdr-anchor "sshd"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    # Load other sshd rules
    anchor "sshd"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    # Tell PF where to find the sshd anchor
    load anchor "sshd" from "/etc/pf.anchors/sshd"
    
  3. প্যাকেট ফিল্টার সক্ষম এবং পুনরায় লোড করুন:

    sudo pfctl -F all -ef /etc/pf.conf
    

    (এটি অক্ষম করতে, চালান sudo pfctl -d))

মনে রাখবেন যে:

  • ম্যাকোস ফায়ারওয়াল (সিস্টেম পছন্দসমূহ> সুরক্ষা ও গোপনীয়তা> ফায়ারওয়াল) প্যাকেট ফিল্টারটির নিচে রয়েছে, যাতে আপনি যখন কমান্ড লাইনে প্যাকেট ফিল্টারটি অক্ষম করেন, আপনি ফায়ারওয়ালটিও অক্ষম করে দিচ্ছেন, এমনকি যদি পছন্দগুলি প্যানেলটি প্রতিফলিত না করে তবেও পরিবর্তন.
  • এসএসএইচ ক্লায়েন্টরা ভাবেন যে তারাSSH_CLIENT এবং SSH_CONNECTIONএনভিভ ভেরিয়েবলের মাধ্যমে 22 পোর্টের সাথে সংযুক্ত হচ্ছে

সম্পাদনা sshd_configকাজ করে না

sshdঅন্যান্য অপারেটিং সিস্টেমে চলমান ব্যবহারকারীরা এসএসএইচ ডেমন কনফিগারেশন ফাইল /etc/ssh/sshd_config,। ম্যাকোসে, তবে নির্দেশিকাটি সম্পাদনা করা পছন্দসই ফলাফল অর্জন করবে নাPort/etc/ssh/sshd_config


1
বন্দর নম্বর অনুবাদ করার জন্য ফায়ারওয়ালটি ব্যবহার করা আরও কী বোঝায়? বিশেষত / ইত্যাদি / পরিষেবাগুলি আইএএনএ-দ্বারা বরাদ্দ করা বন্দর নম্বর হিসাবে বোঝানো হয়েছে: নন স্ট্যান্ডার্ড এসএস পোর্ট: আমি কি সম্পাদনা করব / ইত্যাদি / পরিষেবাদি?
অ্যান্ড্রু মর্টন

1
@ জৌমে, না, আমি আসলে sshক্লায়েন্ট বলতে চাইছি । যদি এটি sshহার্ডকডযুক্ত 22 ব্যবহারের পরিবর্তে পরিষেবাটি দেখায় , তবে পরিবর্তনটি /etc/servicesবহির্গামী এসএসএস সংযোগগুলিতেও প্রভাব ফেলবে (ডিফল্ট দূরবর্তী পোর্ট ক্লায়েন্টের সাথে সংযুক্ত হবে)। বলছেন না এটি আসলে কেস (চেষ্টা করেনি), কেবল অবাক হচ্ছেন।
jcaron

1
@ জ্যাকারন এখন আমি আপনার অর্থ কী বুঝতে পেরেছি তা বুঝতে পেরেছি, খুব ভাল প্রশ্ন, হ্যাঁ, আমি এটি পরীক্ষা করেছি এবং এসএসএইচ ক্লায়েন্টটি "ssh" এন্ট্রিটির মান পড়ে /etc/servicesএবং 2222 পোর্টের সাথে সংযোগ স্থাপনের চেষ্টা করে (বা যে কোনও বন্দর সেখানে সংজ্ঞায়িত করা হয়)। যে, /etc/servicesনা শুধুমাত্র আচরণের পরিবর্তন sshd, কিন্তু ssh। আমি এটি প্রত্যাশা করি নি, আমি উত্তরটি সম্পাদনা করব এবং এটি উল্লেখ করব (একটি কাজের সাথে)
jaume

1
আমি ssh.plist কে / লাইব্রেরি / লঞ্চডেমনগুলিতে অনুলিপি করতে, ফাইলের নাম, লেবেল এবং পোর্ট পরিবর্তন করতে এবং এটিকে আলাদা পরিষেবা হিসাবে লোড করার পরামর্শ দিই। বিশদে এই কোডটি কোডডেমেস.কম এ দেখুন ।
গর্ডন ডেভিসন

1
নিশ্চিত হয়েছেন # 1 মোজাভেতে কাজ করছে
এলে মুন্ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.